F map autoupdate during flying fixed.
This commit is contained in:
parent
2426142664
commit
143daad9e6
@ -11,11 +11,6 @@ import java.util.Set;
|
|||||||
public abstract class Board {
|
public abstract class Board {
|
||||||
protected static Board instance = getBoardImpl();
|
protected static Board instance = getBoardImpl();
|
||||||
|
|
||||||
//----------------------------------------------//
|
|
||||||
// Get and Set
|
|
||||||
//----------------------------------------------//
|
|
||||||
public abstract String getIdAt(FLocation flocation);
|
|
||||||
|
|
||||||
private static Board getBoardImpl() {
|
private static Board getBoardImpl() {
|
||||||
switch (Conf.backEnd) {
|
switch (Conf.backEnd) {
|
||||||
case JSON:
|
case JSON:
|
||||||
@ -28,6 +23,11 @@ public abstract class Board {
|
|||||||
return instance;
|
return instance;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------//
|
||||||
|
// Get and Set
|
||||||
|
//----------------------------------------------//
|
||||||
|
public abstract String getIdAt(FLocation flocation);
|
||||||
|
|
||||||
public abstract Faction getFactionAt(FLocation flocation);
|
public abstract Faction getFactionAt(FLocation flocation);
|
||||||
|
|
||||||
public abstract void setIdAt(String id, FLocation flocation);
|
public abstract void setIdAt(String id, FLocation flocation);
|
||||||
|
@ -10,21 +10,26 @@ import java.util.*;
|
|||||||
|
|
||||||
public class Conf {
|
public class Conf {
|
||||||
|
|
||||||
|
// Region Style
|
||||||
|
public static final transient String DYNMAP_STYLE_LINE_COLOR = "#00FF00";
|
||||||
|
public static final transient double DYNMAP_STYLE_LINE_OPACITY = 0.8D;
|
||||||
|
public static final transient int DYNMAP_STYLE_LINE_WEIGHT = 3;
|
||||||
|
public static final transient String DYNMAP_STYLE_FILL_COLOR = "#00FF00";
|
||||||
|
public static final transient double DYNMAP_STYLE_FILL_OPACITY = 0.35D;
|
||||||
|
public static final transient String DYNMAP_STYLE_HOME_MARKER = "greenflag";
|
||||||
|
public static final transient boolean DYNMAP_STYLE_BOOST = false;
|
||||||
public static List<String> baseCommandAliases = new ArrayList<>();
|
public static List<String> baseCommandAliases = new ArrayList<>();
|
||||||
public static boolean allowNoSlashCommand = true;
|
public static boolean allowNoSlashCommand = true;
|
||||||
|
|
||||||
// Colors
|
// Colors
|
||||||
public static ChatColor colorMember = ChatColor.GREEN;
|
public static ChatColor colorMember = ChatColor.GREEN;
|
||||||
public static ChatColor colorAlly = ChatColor.LIGHT_PURPLE;
|
public static ChatColor colorAlly = ChatColor.LIGHT_PURPLE;
|
||||||
public static ChatColor colorTruce = ChatColor.DARK_PURPLE;
|
public static ChatColor colorTruce = ChatColor.DARK_PURPLE;
|
||||||
public static ChatColor colorNeutral = ChatColor.WHITE;
|
public static ChatColor colorNeutral = ChatColor.WHITE;
|
||||||
public static ChatColor colorEnemy = ChatColor.RED;
|
public static ChatColor colorEnemy = ChatColor.RED;
|
||||||
|
|
||||||
public static ChatColor colorPeaceful = ChatColor.GOLD;
|
public static ChatColor colorPeaceful = ChatColor.GOLD;
|
||||||
public static ChatColor colorWilderness = ChatColor.GRAY;
|
public static ChatColor colorWilderness = ChatColor.GRAY;
|
||||||
public static ChatColor colorSafezone = ChatColor.GOLD;
|
public static ChatColor colorSafezone = ChatColor.GOLD;
|
||||||
public static ChatColor colorWar = ChatColor.DARK_RED;
|
public static ChatColor colorWar = ChatColor.DARK_RED;
|
||||||
|
|
||||||
// Power
|
// Power
|
||||||
public static double powerPlayerMax = 10.0;
|
public static double powerPlayerMax = 10.0;
|
||||||
public static double powerPlayerMin = -10.0;
|
public static double powerPlayerMin = -10.0;
|
||||||
@ -35,32 +40,24 @@ public class Conf {
|
|||||||
public static double powerOfflineLossPerDay = 0.0; // players will lose this much power per day offline
|
public static double powerOfflineLossPerDay = 0.0; // players will lose this much power per day offline
|
||||||
public static double powerOfflineLossLimit = 0.0; // players will no longer lose power from being offline once their power drops to this amount or less
|
public static double powerOfflineLossLimit = 0.0; // players will no longer lose power from being offline once their power drops to this amount or less
|
||||||
public static double powerFactionMax = 0.0; // if greater than 0, the cap on how much power a faction can have (additional power from players beyond that will act as a "buffer" of sorts)
|
public static double powerFactionMax = 0.0; // if greater than 0, the cap on how much power a faction can have (additional power from players beyond that will act as a "buffer" of sorts)
|
||||||
|
|
||||||
public static String prefixAdmin = "***";
|
public static String prefixAdmin = "***";
|
||||||
public static String prefixCoLeader = "**";
|
public static String prefixCoLeader = "**";
|
||||||
public static String prefixMod = "*";
|
public static String prefixMod = "*";
|
||||||
public static String prefixRecruit = "-";
|
public static String prefixRecruit = "-";
|
||||||
public static String prefixNormal = "+";
|
public static String prefixNormal = "+";
|
||||||
|
|
||||||
public static int factionTagLengthMin = 3;
|
public static int factionTagLengthMin = 3;
|
||||||
public static int factionTagLengthMax = 10;
|
public static int factionTagLengthMax = 10;
|
||||||
public static boolean factionTagForceUpperCase = false;
|
public static boolean factionTagForceUpperCase = false;
|
||||||
|
|
||||||
public static boolean newFactionsDefaultOpen = false;
|
public static boolean newFactionsDefaultOpen = false;
|
||||||
|
|
||||||
// when faction membership hits this limit, players will no longer be able to join using /f join; default is 0, no limit
|
// when faction membership hits this limit, players will no longer be able to join using /f join; default is 0, no limit
|
||||||
public static int factionMemberLimit = 0;
|
public static int factionMemberLimit = 0;
|
||||||
|
|
||||||
// what faction ID to start new players in when they first join the server; default is 0, "no faction"
|
// what faction ID to start new players in when they first join the server; default is 0, "no faction"
|
||||||
public static String newPlayerStartingFactionID = "0";
|
public static String newPlayerStartingFactionID = "0";
|
||||||
|
|
||||||
public static boolean showMapFactionKey = true;
|
public static boolean showMapFactionKey = true;
|
||||||
public static boolean showNeutralFactionsOnMap = true;
|
public static boolean showNeutralFactionsOnMap = true;
|
||||||
public static boolean showEnemyFactionsOnMap = true;
|
public static boolean showEnemyFactionsOnMap = true;
|
||||||
|
|
||||||
// Disallow joining/leaving/kicking while power is negative
|
// Disallow joining/leaving/kicking while power is negative
|
||||||
public static boolean canLeaveWithNegativePower = true;
|
public static boolean canLeaveWithNegativePower = true;
|
||||||
|
|
||||||
// Configuration for faction-only chat
|
// Configuration for faction-only chat
|
||||||
public static boolean factionOnlyChat = true;
|
public static boolean factionOnlyChat = true;
|
||||||
// Configuration on the Faction tag in chat messages.
|
// Configuration on the Faction tag in chat messages.
|
||||||
@ -78,24 +75,18 @@ public class Conf {
|
|||||||
public static String allianceChatFormat = ChatColor.LIGHT_PURPLE + "%s:" + ChatColor.WHITE + " %s";
|
public static String allianceChatFormat = ChatColor.LIGHT_PURPLE + "%s:" + ChatColor.WHITE + " %s";
|
||||||
public static String truceChatFormat = ChatColor.DARK_PURPLE + "%s:" + ChatColor.WHITE + " %s";
|
public static String truceChatFormat = ChatColor.DARK_PURPLE + "%s:" + ChatColor.WHITE + " %s";
|
||||||
public static String modChatFormat = ChatColor.RED + "%s:" + ChatColor.WHITE + " %s";
|
public static String modChatFormat = ChatColor.RED + "%s:" + ChatColor.WHITE + " %s";
|
||||||
|
|
||||||
public static int enemyFlyCheckRadius = 16;
|
public static int enemyFlyCheckRadius = 16;
|
||||||
public static boolean noEnderpearlsInFly = false;
|
public static boolean noEnderpearlsInFly = false;
|
||||||
|
|
||||||
public static boolean broadcastDescriptionChanges = false;
|
public static boolean broadcastDescriptionChanges = false;
|
||||||
public static boolean broadcastTagChanges = false;
|
public static boolean broadcastTagChanges = false;
|
||||||
|
|
||||||
public static double saveToFileEveryXMinutes = 30.0;
|
public static double saveToFileEveryXMinutes = 30.0;
|
||||||
|
|
||||||
public static double autoLeaveAfterDaysOfInactivity = 10.0;
|
public static double autoLeaveAfterDaysOfInactivity = 10.0;
|
||||||
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 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;
|
||||||
|
|
||||||
// server logging options
|
// server logging options
|
||||||
public static boolean logFactionCreate = true;
|
public static boolean logFactionCreate = true;
|
||||||
public static boolean logFactionDisband = true;
|
public static boolean logFactionDisband = true;
|
||||||
@ -106,14 +97,12 @@ public class Conf {
|
|||||||
public static boolean logLandUnclaims = true;
|
public static boolean logLandUnclaims = true;
|
||||||
public static boolean logMoneyTransactions = true;
|
public static boolean logMoneyTransactions = true;
|
||||||
public static boolean logPlayerCommands = true;
|
public static boolean logPlayerCommands = true;
|
||||||
|
|
||||||
// prevent some potential exploits
|
// prevent some potential exploits
|
||||||
public static boolean handleExploitObsidianGenerators = true;
|
public static boolean handleExploitObsidianGenerators = true;
|
||||||
public static boolean handleExploitEnderPearlClipping = true;
|
public static boolean handleExploitEnderPearlClipping = true;
|
||||||
public static boolean handleExploitInteractionSpam = true;
|
public static boolean handleExploitInteractionSpam = true;
|
||||||
public static boolean handleExploitTNTWaterlog = false;
|
public static boolean handleExploitTNTWaterlog = false;
|
||||||
public static boolean handleExploitLiquidFlow = false;
|
public static boolean handleExploitLiquidFlow = false;
|
||||||
|
|
||||||
public static boolean homesEnabled = true;
|
public static boolean homesEnabled = true;
|
||||||
public static boolean homesMustBeInClaimedTerritory = true;
|
public static boolean homesMustBeInClaimedTerritory = true;
|
||||||
public static boolean homesTeleportToOnDeath = true;
|
public static boolean homesTeleportToOnDeath = true;
|
||||||
@ -126,43 +115,32 @@ public class Conf {
|
|||||||
public static boolean homesTeleportAllowedFromDifferentWorld = true;
|
public static boolean homesTeleportAllowedFromDifferentWorld = true;
|
||||||
public static double homesTeleportAllowedEnemyDistance = 32.0;
|
public static double homesTeleportAllowedEnemyDistance = 32.0;
|
||||||
public static boolean homesTeleportIgnoreEnemiesIfInOwnTerritory = true;
|
public static boolean homesTeleportIgnoreEnemiesIfInOwnTerritory = true;
|
||||||
|
|
||||||
public static boolean disablePVPBetweenNeutralFactions = false;
|
public static boolean disablePVPBetweenNeutralFactions = false;
|
||||||
public static boolean disablePVPForFactionlessPlayers = false;
|
public static boolean disablePVPForFactionlessPlayers = false;
|
||||||
public static boolean enablePVPAgainstFactionlessInAttackersLand = false;
|
public static boolean enablePVPAgainstFactionlessInAttackersLand = false;
|
||||||
|
|
||||||
public static int noPVPDamageToOthersForXSecondsAfterLogin = 3;
|
public static int noPVPDamageToOthersForXSecondsAfterLogin = 3;
|
||||||
|
|
||||||
public static boolean peacefulTerritoryDisablePVP = true;
|
public static boolean peacefulTerritoryDisablePVP = true;
|
||||||
public static boolean peacefulTerritoryDisableMonsters = false;
|
public static boolean peacefulTerritoryDisableMonsters = false;
|
||||||
public static boolean peacefulTerritoryDisableBoom = false;
|
public static boolean peacefulTerritoryDisableBoom = false;
|
||||||
public static boolean peacefulMembersDisablePowerLoss = true;
|
public static boolean peacefulMembersDisablePowerLoss = true;
|
||||||
|
|
||||||
public static boolean permanentFactionsDisableLeaderPromotion = false;
|
public static boolean permanentFactionsDisableLeaderPromotion = false;
|
||||||
|
|
||||||
public static boolean claimsMustBeConnected = false;
|
public static boolean claimsMustBeConnected = false;
|
||||||
public static boolean claimsCanBeUnconnectedIfOwnedByOtherFaction = true;
|
public static boolean claimsCanBeUnconnectedIfOwnedByOtherFaction = true;
|
||||||
public static int claimsRequireMinFactionMembers = 1;
|
public static int claimsRequireMinFactionMembers = 1;
|
||||||
public static int claimedLandsMax = 0;
|
public static int claimedLandsMax = 0;
|
||||||
public static int lineClaimLimit = 5;
|
public static int lineClaimLimit = 5;
|
||||||
|
|
||||||
// if someone is doing a radius claim and the process fails to claim land this many times in a row, it will exit
|
// if someone is doing a radius claim and the process fails to claim land this many times in a row, it will exit
|
||||||
public static int radiusClaimFailureLimit = 9;
|
public static int radiusClaimFailureLimit = 9;
|
||||||
|
|
||||||
public static double considerFactionsReallyOfflineAfterXMinutes = 0.0;
|
public static double considerFactionsReallyOfflineAfterXMinutes = 0.0;
|
||||||
|
|
||||||
public static int actionDeniedPainAmount = 1;
|
public static int actionDeniedPainAmount = 1;
|
||||||
|
|
||||||
// commands which will be prevented if the player is a member of a permanent faction
|
// commands which will be prevented if the player is a member of a permanent faction
|
||||||
public static Set<String> permanentFactionMemberDenyCommands = new LinkedHashSet<>();
|
public static Set<String> permanentFactionMemberDenyCommands = new LinkedHashSet<>();
|
||||||
|
|
||||||
// commands which will be prevented when in claimed territory of another faction
|
// commands which will be prevented when in claimed territory of another faction
|
||||||
public static Set<String> territoryNeutralDenyCommands = new LinkedHashSet<>();
|
public static Set<String> territoryNeutralDenyCommands = new LinkedHashSet<>();
|
||||||
public static Set<String> territoryEnemyDenyCommands = new LinkedHashSet<>();
|
public static Set<String> territoryEnemyDenyCommands = new LinkedHashSet<>();
|
||||||
public static Set<String> territoryAllyDenyCommands = new LinkedHashSet<>();
|
public static Set<String> territoryAllyDenyCommands = new LinkedHashSet<>();
|
||||||
public static Set<String> warzoneDenyCommands = new LinkedHashSet<>();
|
public static Set<String> warzoneDenyCommands = new LinkedHashSet<>();
|
||||||
public static Set<String> wildernessDenyCommands = new LinkedHashSet<>();
|
public static Set<String> wildernessDenyCommands = new LinkedHashSet<>();
|
||||||
|
|
||||||
public static boolean territoryDenyBuild = true;
|
public static boolean territoryDenyBuild = true;
|
||||||
public static boolean territoryDenyBuildWhenOffline = true;
|
public static boolean territoryDenyBuildWhenOffline = true;
|
||||||
public static boolean territoryPainBuild = false;
|
public static boolean territoryPainBuild = false;
|
||||||
@ -194,13 +172,11 @@ public class Conf {
|
|||||||
public static boolean territoryBlockTNTWhenOffline = false;
|
public static boolean territoryBlockTNTWhenOffline = false;
|
||||||
public static boolean territoryDenyEndermanBlocks = true;
|
public static boolean territoryDenyEndermanBlocks = true;
|
||||||
public static boolean territoryDenyEndermanBlocksWhenOffline = true;
|
public static boolean territoryDenyEndermanBlocksWhenOffline = true;
|
||||||
|
|
||||||
public static boolean safeZoneDenyBuild = true;
|
public static boolean safeZoneDenyBuild = true;
|
||||||
public static boolean safeZoneDenyUseage = true;
|
public static boolean safeZoneDenyUseage = true;
|
||||||
public static boolean safeZoneBlockTNT = true;
|
public static boolean safeZoneBlockTNT = true;
|
||||||
public static boolean safeZonePreventAllDamageToPlayers = false;
|
public static boolean safeZonePreventAllDamageToPlayers = false;
|
||||||
public static boolean safeZoneDenyEndermanBlocks = true;
|
public static boolean safeZoneDenyEndermanBlocks = true;
|
||||||
|
|
||||||
public static boolean warZoneDenyBuild = true;
|
public static boolean warZoneDenyBuild = true;
|
||||||
public static boolean warZoneDenyUseage = true;
|
public static boolean warZoneDenyUseage = true;
|
||||||
public static boolean warZoneBlockCreepers = false;
|
public static boolean warZoneBlockCreepers = false;
|
||||||
@ -209,7 +185,6 @@ public class Conf {
|
|||||||
public static boolean warZonePowerLoss = true;
|
public static boolean warZonePowerLoss = true;
|
||||||
public static boolean warZoneFriendlyFire = false;
|
public static boolean warZoneFriendlyFire = false;
|
||||||
public static boolean warZoneDenyEndermanBlocks = true;
|
public static boolean warZoneDenyEndermanBlocks = true;
|
||||||
|
|
||||||
public static boolean wildernessDenyBuild = false;
|
public static boolean wildernessDenyBuild = false;
|
||||||
public static boolean wildernessDenyUseage = false;
|
public static boolean wildernessDenyUseage = false;
|
||||||
public static boolean wildernessBlockCreepers = false;
|
public static boolean wildernessBlockCreepers = false;
|
||||||
@ -217,7 +192,6 @@ public class Conf {
|
|||||||
public static boolean wildernessBlockTNT = false;
|
public static boolean wildernessBlockTNT = false;
|
||||||
public static boolean wildernessPowerLoss = true;
|
public static boolean wildernessPowerLoss = true;
|
||||||
public static boolean wildernessDenyEndermanBlocks = false;
|
public static boolean wildernessDenyEndermanBlocks = false;
|
||||||
|
|
||||||
// for claimed areas where further faction-member ownership can be defined
|
// for claimed areas where further faction-member ownership can be defined
|
||||||
public static boolean ownedAreasEnabled = true;
|
public static boolean ownedAreasEnabled = true;
|
||||||
public static int ownedAreasLimitPerFaction = 0;
|
public static int ownedAreasLimitPerFaction = 0;
|
||||||
@ -227,18 +201,14 @@ public class Conf {
|
|||||||
public static boolean ownedAreaPainBuild = false;
|
public static boolean ownedAreaPainBuild = false;
|
||||||
public static boolean ownedAreaProtectMaterials = true;
|
public static boolean ownedAreaProtectMaterials = true;
|
||||||
public static boolean ownedAreaDenyUseage = true;
|
public static boolean ownedAreaDenyUseage = true;
|
||||||
|
|
||||||
public static boolean ownedMessageOnBorder = true;
|
public static boolean ownedMessageOnBorder = true;
|
||||||
public static boolean ownedMessageInsideTerritory = true;
|
public static boolean ownedMessageInsideTerritory = true;
|
||||||
public static boolean ownedMessageByChunk = false;
|
public static boolean ownedMessageByChunk = false;
|
||||||
|
|
||||||
public static boolean pistonProtectionThroughDenyBuild = true;
|
public static boolean pistonProtectionThroughDenyBuild = true;
|
||||||
|
|
||||||
public static Set<Material> territoryProtectedMaterials = EnumSet.noneOf(Material.class);
|
public static Set<Material> territoryProtectedMaterials = EnumSet.noneOf(Material.class);
|
||||||
public static Set<Material> territoryDenyUseageMaterials = EnumSet.noneOf(Material.class);
|
public static Set<Material> territoryDenyUseageMaterials = EnumSet.noneOf(Material.class);
|
||||||
public static Set<Material> territoryProtectedMaterialsWhenOffline = EnumSet.noneOf(Material.class);
|
public static Set<Material> territoryProtectedMaterialsWhenOffline = EnumSet.noneOf(Material.class);
|
||||||
public static Set<Material> territoryDenyUseageMaterialsWhenOffline = EnumSet.noneOf(Material.class);
|
public static Set<Material> territoryDenyUseageMaterialsWhenOffline = EnumSet.noneOf(Material.class);
|
||||||
|
|
||||||
public static transient Set<EntityType> safeZoneNerfedCreatureTypes = EnumSet.noneOf(EntityType.class);
|
public static transient Set<EntityType> safeZoneNerfedCreatureTypes = EnumSet.noneOf(EntityType.class);
|
||||||
// Economy settings
|
// Economy settings
|
||||||
public static boolean econEnabled = false;
|
public static boolean econEnabled = false;
|
||||||
@ -264,6 +234,11 @@ public class Conf {
|
|||||||
public static double econCostMap = 0.0;
|
public static double econCostMap = 0.0;
|
||||||
public static double econCostPower = 0.0;
|
public static double econCostPower = 0.0;
|
||||||
public static double econCostShow = 0.0;
|
public static double econCostShow = 0.0;
|
||||||
|
|
||||||
|
|
||||||
|
// -------------------------------------------- //
|
||||||
|
// INTEGRATION: DYNMAP
|
||||||
|
// -------------------------------------------- //
|
||||||
public static double econCostStuck = 0.0;
|
public static double econCostStuck = 0.0;
|
||||||
public static double econCostOpen = 0.0;
|
public static double econCostOpen = 0.0;
|
||||||
public static double econCostAlly = 0.0;
|
public static double econCostAlly = 0.0;
|
||||||
@ -271,27 +246,16 @@ public class Conf {
|
|||||||
public static double econCostEnemy = 0.0;
|
public static double econCostEnemy = 0.0;
|
||||||
public static double econCostNeutral = 0.0;
|
public static double econCostNeutral = 0.0;
|
||||||
public static double econCostNoBoom = 0.0;
|
public static double econCostNoBoom = 0.0;
|
||||||
|
|
||||||
|
|
||||||
// -------------------------------------------- //
|
|
||||||
// INTEGRATION: DYNMAP
|
|
||||||
// -------------------------------------------- //
|
|
||||||
|
|
||||||
// Should the dynmap intagration be used?
|
// Should the dynmap intagration be used?
|
||||||
public static boolean dynmapUse = false;
|
public static boolean dynmapUse = false;
|
||||||
|
|
||||||
// Name of the Factions layer
|
// Name of the Factions layer
|
||||||
public static String dynmapLayerName = "Factions";
|
public static String dynmapLayerName = "Factions";
|
||||||
|
|
||||||
// Should the layer be visible per default
|
// Should the layer be visible per default
|
||||||
public static boolean dynmapLayerVisible = true;
|
public static boolean dynmapLayerVisible = true;
|
||||||
|
|
||||||
// Ordering priority in layer menu (low goes before high - default is 0)
|
// Ordering priority in layer menu (low goes before high - default is 0)
|
||||||
public static int dynmapLayerPriority = 2;
|
public static int dynmapLayerPriority = 2;
|
||||||
|
|
||||||
// (optional) set minimum zoom level before layer is visible (0 = default, always visible)
|
// (optional) set minimum zoom level before layer is visible (0 = default, always visible)
|
||||||
public static int dynmapLayerMinimumZoom = 0;
|
public static int dynmapLayerMinimumZoom = 0;
|
||||||
|
|
||||||
// Format for popup - substitute values for macros
|
// Format for popup - substitute values for macros
|
||||||
public static String dynmapDescription =
|
public static String dynmapDescription =
|
||||||
"<div class=\"infowindow\">\n"
|
"<div class=\"infowindow\">\n"
|
||||||
@ -307,33 +271,19 @@ public class Conf {
|
|||||||
+ "<span style=\"font-weight: bold;\">Bank:</span> %money%<br>\n"
|
+ "<span style=\"font-weight: bold;\">Bank:</span> %money%<br>\n"
|
||||||
+ "<br>\n"
|
+ "<br>\n"
|
||||||
+ "</div>";
|
+ "</div>";
|
||||||
|
|
||||||
// Enable the %money% macro. Only do this if you know your economy manager is thread-safe.
|
// Enable the %money% macro. Only do this if you know your economy manager is thread-safe.
|
||||||
public static boolean dynmapDescriptionMoney = false;
|
public static boolean dynmapDescriptionMoney = false;
|
||||||
|
|
||||||
// Allow players in faction to see one another on Dynmap (only relevant if Dynmap has 'player-info-protected' enabled)
|
// Allow players in faction to see one another on Dynmap (only relevant if Dynmap has 'player-info-protected' enabled)
|
||||||
public static boolean dynmapVisibilityByFaction = true;
|
public static boolean dynmapVisibilityByFaction = true;
|
||||||
|
|
||||||
// Optional setting to limit which regions to show.
|
// Optional setting to limit which regions to show.
|
||||||
// If empty all regions are shown.
|
// If empty all regions are shown.
|
||||||
// Specify Faction either by name or UUID.
|
// Specify Faction either by name or UUID.
|
||||||
// To show all regions on a given world, add 'world:<worldname>' to the list.
|
// To show all regions on a given world, add 'world:<worldname>' to the list.
|
||||||
public static Set<String> dynmapVisibleFactions = new HashSet<>();
|
public static Set<String> dynmapVisibleFactions = new HashSet<>();
|
||||||
|
|
||||||
// Optional setting to hide specific Factions.
|
// Optional setting to hide specific Factions.
|
||||||
// Specify Faction either by name or UUID.
|
// Specify Faction either by name or UUID.
|
||||||
// To hide all regions on a given world, add 'world:<worldname>' to the list.
|
// To hide all regions on a given world, add 'world:<worldname>' to the list.
|
||||||
public static Set<String> dynmapHiddenFactions = new HashSet<>();
|
public static Set<String> dynmapHiddenFactions = new HashSet<>();
|
||||||
|
|
||||||
// Region Style
|
|
||||||
public static final transient String DYNMAP_STYLE_LINE_COLOR = "#00FF00";
|
|
||||||
public static final transient double DYNMAP_STYLE_LINE_OPACITY = 0.8D;
|
|
||||||
public static final transient int DYNMAP_STYLE_LINE_WEIGHT = 3;
|
|
||||||
public static final transient String DYNMAP_STYLE_FILL_COLOR = "#00FF00";
|
|
||||||
public static final transient double DYNMAP_STYLE_FILL_OPACITY = 0.35D;
|
|
||||||
public static final transient String DYNMAP_STYLE_HOME_MARKER = "greenflag";
|
|
||||||
public static final transient boolean DYNMAP_STYLE_BOOST = false;
|
|
||||||
|
|
||||||
public static DynmapStyle dynmapDefaultStyle = new DynmapStyle()
|
public static DynmapStyle dynmapDefaultStyle = new DynmapStyle()
|
||||||
.setStrokeColor(DYNMAP_STYLE_LINE_COLOR)
|
.setStrokeColor(DYNMAP_STYLE_LINE_COLOR)
|
||||||
.setLineOpacity(DYNMAP_STYLE_LINE_OPACITY)
|
.setLineOpacity(DYNMAP_STYLE_LINE_OPACITY)
|
||||||
@ -375,6 +325,10 @@ public class Conf {
|
|||||||
public static int mapHeight = 17;
|
public static int mapHeight = 17;
|
||||||
public static int mapWidth = 49;
|
public static int mapWidth = 49;
|
||||||
public static transient char[] mapKeyChrs = "\\/#$%=&^ABCDEFGHJKLMNOPQRSTUVWXYZ1234567890abcdeghjmnopqrsuvwxyz?".toCharArray();
|
public static transient char[] mapKeyChrs = "\\/#$%=&^ABCDEFGHJKLMNOPQRSTUVWXYZ1234567890abcdeghjmnopqrsuvwxyz?".toCharArray();
|
||||||
|
// -------------------------------------------- //
|
||||||
|
// Persistance
|
||||||
|
// -------------------------------------------- //
|
||||||
|
private static transient Conf i = new Conf();
|
||||||
|
|
||||||
static {
|
static {
|
||||||
baseCommandAliases.add("f");
|
baseCommandAliases.add("f");
|
||||||
@ -455,11 +409,6 @@ public class Conf {
|
|||||||
safeZoneNerfedCreatureTypes.add(EntityType.ZOMBIE);
|
safeZoneNerfedCreatureTypes.add(EntityType.ZOMBIE);
|
||||||
}
|
}
|
||||||
|
|
||||||
// -------------------------------------------- //
|
|
||||||
// Persistance
|
|
||||||
// -------------------------------------------- //
|
|
||||||
private static transient Conf i = new Conf();
|
|
||||||
|
|
||||||
public static void load() {
|
public static void load() {
|
||||||
P.p.persist.loadOrSaveDefault(i, Conf.class, "conf");
|
P.p.persist.loadOrSaveDefault(i, Conf.class, "conf");
|
||||||
}
|
}
|
||||||
|
@ -13,9 +13,6 @@ import java.util.Set;
|
|||||||
public class FLocation implements Serializable {
|
public class FLocation implements Serializable {
|
||||||
private static final long serialVersionUID = -8292915234027387983L;
|
private static final long serialVersionUID = -8292915234027387983L;
|
||||||
private static final boolean worldBorderSupport;
|
private static final boolean worldBorderSupport;
|
||||||
private String worldName = "world";
|
|
||||||
private int x = 0;
|
|
||||||
private int z = 0;
|
|
||||||
|
|
||||||
static {
|
static {
|
||||||
boolean worldBorderClassPresent = false;
|
boolean worldBorderClassPresent = false;
|
||||||
@ -28,6 +25,10 @@ public class FLocation implements Serializable {
|
|||||||
worldBorderSupport = worldBorderClassPresent;
|
worldBorderSupport = worldBorderClassPresent;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private String worldName = "world";
|
||||||
|
private int x = 0;
|
||||||
|
private int z = 0;
|
||||||
|
|
||||||
//----------------------------------------------//
|
//----------------------------------------------//
|
||||||
// Constructors
|
// Constructors
|
||||||
//----------------------------------------------//
|
//----------------------------------------------//
|
||||||
@ -62,43 +63,6 @@ public class FLocation implements Serializable {
|
|||||||
// Getters and Setters
|
// Getters and Setters
|
||||||
//----------------------------------------------//
|
//----------------------------------------------//
|
||||||
|
|
||||||
public String getWorldName() {
|
|
||||||
return worldName;
|
|
||||||
}
|
|
||||||
|
|
||||||
public World getWorld() {
|
|
||||||
return Bukkit.getWorld(worldName);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setWorldName(String worldName) {
|
|
||||||
this.worldName = worldName;
|
|
||||||
}
|
|
||||||
|
|
||||||
public long getX() {
|
|
||||||
return x;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setX(int x) {
|
|
||||||
this.x = x;
|
|
||||||
}
|
|
||||||
|
|
||||||
public long getZ() {
|
|
||||||
return z;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setZ(int z) {
|
|
||||||
this.z = z;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getCoordString() {
|
|
||||||
return "" + x + "," + z;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String toString() {
|
|
||||||
return "[" + this.getWorldName() + "," + this.getCoordString() + "]";
|
|
||||||
}
|
|
||||||
|
|
||||||
public static FLocation fromString(String string) {
|
public static FLocation fromString(String string) {
|
||||||
int index = string.indexOf(",", 0);
|
int index = string.indexOf(",", 0);
|
||||||
int start = 1;
|
int start = 1;
|
||||||
@ -110,10 +74,6 @@ public class FLocation implements Serializable {
|
|||||||
return new FLocation(worldName, x, y);
|
return new FLocation(worldName, x, y);
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------//
|
|
||||||
// Block/Chunk/Region Value Transformation
|
|
||||||
//----------------------------------------------//
|
|
||||||
|
|
||||||
// bit-shifting is used because it's much faster than standard division and multiplication
|
// bit-shifting is used because it's much faster than standard division and multiplication
|
||||||
public static int blockToChunk(int blockVal) { // 1 chunk is 16x16 blocks
|
public static int blockToChunk(int blockVal) { // 1 chunk is 16x16 blocks
|
||||||
return blockVal >> 4; // ">> 4" == "/ 16"
|
return blockVal >> 4; // ">> 4" == "/ 16"
|
||||||
@ -139,10 +99,63 @@ public class FLocation implements Serializable {
|
|||||||
return regionVal << 5; // "<< 5" == "* 32"
|
return regionVal << 5; // "<< 5" == "* 32"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static HashSet<FLocation> getArea(FLocation from, FLocation to) {
|
||||||
|
HashSet<FLocation> ret = new HashSet<>();
|
||||||
|
|
||||||
|
for (long x : MiscUtil.range(from.getX(), to.getX())) {
|
||||||
|
for (long z : MiscUtil.range(from.getZ(), to.getZ())) {
|
||||||
|
ret.add(new FLocation(from.getWorldName(), (int) x, (int) z));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getWorldName() {
|
||||||
|
return worldName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setWorldName(String worldName) {
|
||||||
|
this.worldName = worldName;
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------//
|
||||||
|
// Block/Chunk/Region Value Transformation
|
||||||
|
//----------------------------------------------//
|
||||||
|
|
||||||
|
public World getWorld() {
|
||||||
|
return Bukkit.getWorld(worldName);
|
||||||
|
}
|
||||||
|
|
||||||
|
public long getX() {
|
||||||
|
return x;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setX(int x) {
|
||||||
|
this.x = x;
|
||||||
|
}
|
||||||
|
|
||||||
|
public long getZ() {
|
||||||
|
return z;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setZ(int z) {
|
||||||
|
this.z = z;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getCoordString() {
|
||||||
|
return "" + x + "," + z;
|
||||||
|
}
|
||||||
|
|
||||||
//----------------------------------------------//
|
//----------------------------------------------//
|
||||||
// Misc Geometry
|
// Misc Geometry
|
||||||
//----------------------------------------------//
|
//----------------------------------------------//
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "[" + this.getWorldName() + "," + this.getCoordString() + "]";
|
||||||
|
}
|
||||||
|
|
||||||
public FLocation getRelative(int dx, int dz) {
|
public FLocation getRelative(int dx, int dz) {
|
||||||
return new FLocation(this.worldName, this.x + dx, this.z + dz);
|
return new FLocation(this.worldName, this.x + dx, this.z + dz);
|
||||||
}
|
}
|
||||||
@ -215,18 +228,6 @@ public class FLocation implements Serializable {
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static HashSet<FLocation> getArea(FLocation from, FLocation to) {
|
|
||||||
HashSet<FLocation> ret = new HashSet<>();
|
|
||||||
|
|
||||||
for (long x : MiscUtil.range(from.getX(), to.getX())) {
|
|
||||||
for (long z : MiscUtil.range(from.getZ(), to.getZ())) {
|
|
||||||
ret.add(new FLocation(from.getWorldName(), (int) x, (int) z));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
//----------------------------------------------//
|
//----------------------------------------------//
|
||||||
// Comparison
|
// Comparison
|
||||||
//----------------------------------------------//
|
//----------------------------------------------//
|
||||||
|
@ -332,7 +332,4 @@ public interface FPlayer extends EconomyParticipator {
|
|||||||
void clearWarmup();
|
void clearWarmup();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
@ -9,8 +9,6 @@ import java.util.Collection;
|
|||||||
public abstract class FPlayers {
|
public abstract class FPlayers {
|
||||||
protected static FPlayers instance = getFPlayersImpl();
|
protected static FPlayers instance = getFPlayersImpl();
|
||||||
|
|
||||||
public abstract void clean();
|
|
||||||
|
|
||||||
public static FPlayers getInstance() {
|
public static FPlayers getInstance() {
|
||||||
return instance;
|
return instance;
|
||||||
}
|
}
|
||||||
@ -23,6 +21,8 @@ public abstract class FPlayers {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public abstract void clean();
|
||||||
|
|
||||||
public abstract Collection<FPlayer> getOnlinePlayers();
|
public abstract Collection<FPlayer> getOnlinePlayers();
|
||||||
|
|
||||||
public abstract FPlayer getByPlayer(Player player);
|
public abstract FPlayer getByPlayer(Player player);
|
||||||
|
@ -8,6 +8,18 @@ import java.util.Set;
|
|||||||
public abstract class Factions {
|
public abstract class Factions {
|
||||||
protected static Factions instance = getFactionsImpl();
|
protected static Factions instance = getFactionsImpl();
|
||||||
|
|
||||||
|
public static Factions getInstance() {
|
||||||
|
return instance;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static Factions getFactionsImpl() {
|
||||||
|
switch (Conf.backEnd) {
|
||||||
|
case JSON:
|
||||||
|
return new JSONFactions();
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
public abstract Faction getFactionById(String id);
|
public abstract Faction getFactionById(String id);
|
||||||
|
|
||||||
public abstract Faction getByTag(String str);
|
public abstract Faction getByTag(String str);
|
||||||
@ -39,17 +51,5 @@ public abstract class Factions {
|
|||||||
|
|
||||||
public abstract void forceSave(boolean sync);
|
public abstract void forceSave(boolean sync);
|
||||||
|
|
||||||
public static Factions getInstance() {
|
|
||||||
return instance;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static Factions getFactionsImpl() {
|
|
||||||
switch (Conf.backEnd) {
|
|
||||||
case JSON:
|
|
||||||
return new JSONFactions();
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public abstract void load();
|
public abstract void load();
|
||||||
}
|
}
|
||||||
|
@ -49,13 +49,24 @@ public class P extends MPlugin {
|
|||||||
public static Permission perms = null;
|
public static Permission perms = null;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public boolean PlaceholderApi;
|
public boolean PlaceholderApi;
|
||||||
|
// Commands
|
||||||
|
public FCmdRoot cmdBase;
|
||||||
|
public CmdAutoHelp cmdAutoHelp;
|
||||||
|
public boolean mc17 = false;
|
||||||
|
public boolean mc18 = false;
|
||||||
|
public boolean factionsFlight = false;
|
||||||
ItemStack item = new ItemStack(Material.CAKE);
|
ItemStack item = new ItemStack(Material.CAKE);
|
||||||
// Persistence related
|
// Persistence related
|
||||||
private boolean locked = false;
|
private boolean locked = false;
|
||||||
|
private Integer AutoLeaveTask = null;
|
||||||
|
private boolean hookedPlayervaults;
|
||||||
|
private ClipPlaceholderAPIManager clipPlaceholderAPIManager;
|
||||||
|
private boolean mvdwPlaceholderAPIManager = false;
|
||||||
|
|
||||||
|
public P() {
|
||||||
|
p = this;
|
||||||
|
}
|
||||||
|
|
||||||
public boolean getLocked() {
|
public boolean getLocked() {
|
||||||
return this.locked;
|
return this.locked;
|
||||||
@ -66,7 +77,6 @@ public class P extends MPlugin {
|
|||||||
this.setAutoSave(val);
|
this.setAutoSave(val);
|
||||||
}
|
}
|
||||||
|
|
||||||
private Integer AutoLeaveTask = null;
|
|
||||||
public void playSoundForAll(String sound) {
|
public void playSoundForAll(String sound) {
|
||||||
for (Player pl : Bukkit.getOnlinePlayers()) {
|
for (Player pl : Bukkit.getOnlinePlayers()) {
|
||||||
playSound(pl, sound);
|
playSound(pl, sound);
|
||||||
@ -90,22 +100,6 @@ public class P extends MPlugin {
|
|||||||
sound = sound.split(":")[0];
|
sound = sound.split(":")[0];
|
||||||
p.playSound(p.getLocation(), Sound.valueOf(sound), pitch, 5.0F);
|
p.playSound(p.getLocation(), Sound.valueOf(sound), pitch, 5.0F);
|
||||||
}
|
}
|
||||||
// Commands
|
|
||||||
public FCmdRoot cmdBase;
|
|
||||||
public CmdAutoHelp cmdAutoHelp;
|
|
||||||
|
|
||||||
private boolean hookedPlayervaults;
|
|
||||||
private ClipPlaceholderAPIManager clipPlaceholderAPIManager;
|
|
||||||
private boolean mvdwPlaceholderAPIManager = false;
|
|
||||||
|
|
||||||
public P() {
|
|
||||||
p = this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean mc17 = false;
|
|
||||||
public boolean mc18 = false;
|
|
||||||
public boolean factionsFlight = false;
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onEnable() {
|
public void onEnable() {
|
||||||
@ -183,9 +177,6 @@ public class P extends MPlugin {
|
|||||||
this.getCommand(this.refCommand).setExecutor(this);
|
this.getCommand(this.refCommand).setExecutor(this);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
setupPlaceholderAPI();
|
setupPlaceholderAPI();
|
||||||
postEnable();
|
postEnable();
|
||||||
this.loadSuccessful = true;
|
this.loadSuccessful = true;
|
||||||
@ -245,7 +236,8 @@ public class P extends MPlugin {
|
|||||||
Type accessTypeAdatper = new TypeToken<Map<Permissable, Map<PermissableAction, Access>>>() {
|
Type accessTypeAdatper = new TypeToken<Map<Permissable, Map<PermissableAction, Access>>>() {
|
||||||
}.getType();
|
}.getType();
|
||||||
|
|
||||||
return new GsonBuilder().setPrettyPrinting().disableHtmlEscaping().enableComplexMapKeySerialization().excludeFieldsWithModifiers(Modifier.TRANSIENT, Modifier.VOLATILE).registerTypeAdapter(accessTypeAdatper, new PermissionsMapTypeAdapter()).registerTypeAdapter(LazyLocation.class, new MyLocationTypeAdapter()).registerTypeAdapter(mapFLocToStringSetType, new MapFLocToStringSetTypeAdapter()).registerTypeAdapterFactory(EnumTypeAdapter.ENUM_FACTORY); }
|
return new GsonBuilder().setPrettyPrinting().disableHtmlEscaping().enableComplexMapKeySerialization().excludeFieldsWithModifiers(Modifier.TRANSIENT, Modifier.VOLATILE).registerTypeAdapter(accessTypeAdatper, new PermissionsMapTypeAdapter()).registerTypeAdapter(LazyLocation.class, new MyLocationTypeAdapter()).registerTypeAdapter(mapFLocToStringSetType, new MapFLocToStringSetTypeAdapter()).registerTypeAdapterFactory(EnumTypeAdapter.ENUM_FACTORY);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onDisable() {
|
public void onDisable() {
|
||||||
@ -280,6 +272,7 @@ public class P extends MPlugin {
|
|||||||
//Board.getInstance().forceSave(); Not sure why this was there as it's called after the board is already saved.
|
//Board.getInstance().forceSave(); Not sure why this was there as it's called after the board is already saved.
|
||||||
Conf.save();
|
Conf.save();
|
||||||
}
|
}
|
||||||
|
|
||||||
public ItemStack createItem(Material material, int amount, short datavalue, String name, List<String> lore) {
|
public ItemStack createItem(Material material, int amount, short datavalue, String name, List<String> lore) {
|
||||||
ItemStack item = new ItemStack(material, amount, datavalue);
|
ItemStack item = new ItemStack(material, amount, datavalue);
|
||||||
ItemMeta meta = item.getItemMeta();
|
ItemMeta meta = item.getItemMeta();
|
||||||
@ -303,6 +296,7 @@ public class P extends MPlugin {
|
|||||||
Economy econ = rsp.getProvider();
|
Economy econ = rsp.getProvider();
|
||||||
return econ;
|
return econ;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean logPlayerCommands() {
|
public boolean logPlayerCommands() {
|
||||||
return Conf.logPlayerCommands;
|
return Conf.logPlayerCommands;
|
||||||
|
@ -75,7 +75,6 @@ public class CmdBan extends FCommand {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Ban the user.
|
// Ban the user.
|
||||||
myFaction.ban(target, fme);
|
myFaction.ban(target, fme);
|
||||||
myFaction.deinvite(target); // can't hurt
|
myFaction.deinvite(target); // can't hurt
|
||||||
|
@ -4,7 +4,6 @@ import com.massivecraft.factions.Conf;
|
|||||||
import com.massivecraft.factions.struct.ChatMode;
|
import com.massivecraft.factions.struct.ChatMode;
|
||||||
import com.massivecraft.factions.struct.Permission;
|
import com.massivecraft.factions.struct.Permission;
|
||||||
import com.massivecraft.factions.zcore.util.TL;
|
import com.massivecraft.factions.zcore.util.TL;
|
||||||
import org.bukkit.Bukkit;
|
|
||||||
|
|
||||||
public class CmdChat extends FCommand {
|
public class CmdChat extends FCommand {
|
||||||
|
|
||||||
@ -56,8 +55,7 @@ public class CmdChat extends FCommand {
|
|||||||
|
|
||||||
fme.setChatMode(modeTarget);
|
fme.setChatMode(modeTarget);
|
||||||
|
|
||||||
if (fme.getChatMode() == ChatMode.MOD)
|
if (fme.getChatMode() == ChatMode.MOD) {
|
||||||
{
|
|
||||||
msg(TL.COMMAND_CHAT_MODE_MOD);
|
msg(TL.COMMAND_CHAT_MODE_MOD);
|
||||||
} else if (fme.getChatMode() == ChatMode.PUBLIC) {
|
} else if (fme.getChatMode() == ChatMode.PUBLIC) {
|
||||||
msg(TL.COMMAND_CHAT_MODE_PUBLIC);
|
msg(TL.COMMAND_CHAT_MODE_PUBLIC);
|
||||||
|
@ -50,8 +50,8 @@ public class CmdClaim extends FCommand {
|
|||||||
}
|
}
|
||||||
|
|
||||||
new SpiralTask(new FLocation(me), radius) {
|
new SpiralTask(new FLocation(me), radius) {
|
||||||
private int failCount = 0;
|
|
||||||
private final int limit = Conf.radiusClaimFailureLimit - 1;
|
private final int limit = Conf.radiusClaimFailureLimit - 1;
|
||||||
|
private int failCount = 0;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean work() {
|
public boolean work() {
|
||||||
|
@ -4,7 +4,6 @@ import com.massivecraft.factions.FPlayer;
|
|||||||
import com.massivecraft.factions.struct.Permission;
|
import com.massivecraft.factions.struct.Permission;
|
||||||
import com.massivecraft.factions.zcore.util.TL;
|
import com.massivecraft.factions.zcore.util.TL;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.plugin.java.JavaPlugin;
|
|
||||||
|
|
||||||
public class CmdCoords extends FCommand {
|
public class CmdCoords extends FCommand {
|
||||||
|
|
||||||
|
@ -24,6 +24,7 @@ public class CmdFly extends FCommand {
|
|||||||
public static ConcurrentHashMap<String, Boolean> flyMap = new ConcurrentHashMap<String, Boolean>();
|
public static ConcurrentHashMap<String, Boolean> flyMap = new ConcurrentHashMap<String, Boolean>();
|
||||||
public static int id = -1;
|
public static int id = -1;
|
||||||
public static int flyid = -1;
|
public static int flyid = -1;
|
||||||
|
|
||||||
public CmdFly() {
|
public CmdFly() {
|
||||||
super();
|
super();
|
||||||
this.aliases.add("fly");
|
this.aliases.add("fly");
|
||||||
@ -139,16 +140,23 @@ public class CmdFly extends FCommand {
|
|||||||
return ((player.hasPermission("factions.fly.neutral") || access == Access.ALLOW) && toFac.getRelationTo(fplayer.getFaction()) == Relation.NEUTRAL && !isSystemFaction(toFac));
|
return ((player.hasPermission("factions.fly.neutral") || access == Access.ALLOW) && toFac.getRelationTo(fplayer.getFaction()) == Relation.NEUTRAL && !isSystemFaction(toFac));
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isInFlightChecker(Player player) {
|
|
||||||
return flyMap.containsKey(player.getName());
|
|
||||||
}
|
|
||||||
|
|
||||||
public static Boolean isSystemFaction(Faction faction) {
|
public static Boolean isSystemFaction(Faction faction) {
|
||||||
return faction.isSafeZone() ||
|
return faction.isSafeZone() ||
|
||||||
faction.isWarZone() ||
|
faction.isWarZone() ||
|
||||||
faction.isWilderness();
|
faction.isWilderness();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void checkTaskState() {
|
||||||
|
if (flyMap.keySet().size() == 0) {
|
||||||
|
Bukkit.getScheduler().cancelTask(flyid);
|
||||||
|
flyid = -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isInFlightChecker(Player player) {
|
||||||
|
return flyMap.containsKey(player.getName());
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void perform() {
|
public void perform() {
|
||||||
// Disabled by default.
|
// Disabled by default.
|
||||||
@ -193,16 +201,12 @@ public class CmdFly extends FCommand {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
List<Entity> entities = me.getNearbyEntities(16, 256, 16);
|
List<Entity> entities = me.getNearbyEntities(16, 256, 16);
|
||||||
for (int i = 0; i <= entities.size() -1;i++)
|
for (int i = 0; i <= entities.size() - 1; i++) {
|
||||||
{
|
if (entities.get(i) instanceof Player) {
|
||||||
if (entities.get(i) instanceof Player)
|
|
||||||
{
|
|
||||||
Player eplayer = (Player) entities.get(i);
|
Player eplayer = (Player) entities.get(i);
|
||||||
FPlayer efplayer = FPlayers.getInstance().getByPlayer(eplayer);
|
FPlayer efplayer = FPlayers.getInstance().getByPlayer(eplayer);
|
||||||
if (efplayer.getRelationTo(fme) == Relation.ENEMY)
|
if (efplayer.getRelationTo(fme) == Relation.ENEMY) {
|
||||||
{
|
|
||||||
fme.msg(TL.COMMAND_FLY_CHECK_ENEMY);
|
fme.msg(TL.COMMAND_FLY_CHECK_ENEMY);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -217,13 +221,6 @@ public class CmdFly extends FCommand {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void checkTaskState() {
|
|
||||||
if (flyMap.keySet().size() == 0) {
|
|
||||||
Bukkit.getScheduler().cancelTask(flyid);
|
|
||||||
flyid = -1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void toggleFlight(final boolean toggle, final Player player) {
|
private void toggleFlight(final boolean toggle, final Player player) {
|
||||||
if (!toggle) {
|
if (!toggle) {
|
||||||
fme.setFlying(false);
|
fme.setFlying(false);
|
||||||
|
@ -13,6 +13,8 @@ import java.util.List;
|
|||||||
|
|
||||||
public class CmdHelp extends FCommand {
|
public class CmdHelp extends FCommand {
|
||||||
|
|
||||||
|
public ArrayList<ArrayList<String>> helpPages;
|
||||||
|
|
||||||
public CmdHelp() {
|
public CmdHelp() {
|
||||||
super();
|
super();
|
||||||
this.aliases.add("help");
|
this.aliases.add("help");
|
||||||
@ -32,6 +34,10 @@ public class CmdHelp extends FCommand {
|
|||||||
senderMustBeAdmin = false;
|
senderMustBeAdmin = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------//
|
||||||
|
// Build the help pages
|
||||||
|
//----------------------------------------------//
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void perform() {
|
public void perform() {
|
||||||
if (P.p.getConfig().getBoolean("use-old-help", true)) {
|
if (P.p.getConfig().getBoolean("use-old-help", true)) {
|
||||||
@ -70,12 +76,6 @@ public class CmdHelp extends FCommand {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------//
|
|
||||||
// Build the help pages
|
|
||||||
//----------------------------------------------//
|
|
||||||
|
|
||||||
public ArrayList<ArrayList<String>> helpPages;
|
|
||||||
|
|
||||||
public void updateHelp() {
|
public void updateHelp() {
|
||||||
helpPages = new ArrayList<>();
|
helpPages = new ArrayList<>();
|
||||||
ArrayList<String> pageLines;
|
ArrayList<String> pageLines;
|
||||||
|
@ -3,8 +3,7 @@ package com.massivecraft.factions.cmd;
|
|||||||
import com.massivecraft.factions.struct.Permission;
|
import com.massivecraft.factions.struct.Permission;
|
||||||
import com.massivecraft.factions.zcore.util.TL;
|
import com.massivecraft.factions.zcore.util.TL;
|
||||||
|
|
||||||
public class CmdInspect extends FCommand
|
public class CmdInspect extends FCommand {
|
||||||
{
|
|
||||||
public CmdInspect() {
|
public CmdInspect() {
|
||||||
super();
|
super();
|
||||||
this.aliases.add("inspect");
|
this.aliases.add("inspect");
|
||||||
|
@ -2,7 +2,6 @@ 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.struct.Permission;
|
|
||||||
import com.massivecraft.factions.zcore.util.TL;
|
import com.massivecraft.factions.zcore.util.TL;
|
||||||
|
|
||||||
public class CmdLowPower extends FCommand {
|
public class CmdLowPower extends FCommand {
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
package com.massivecraft.factions.cmd;
|
package com.massivecraft.factions.cmd;
|
||||||
|
|
||||||
import com.earth2me.essentials.Console;
|
|
||||||
import com.massivecraft.factions.Faction;
|
import com.massivecraft.factions.Faction;
|
||||||
import com.massivecraft.factions.integration.Econ;
|
import com.massivecraft.factions.integration.Econ;
|
||||||
import com.massivecraft.factions.struct.Permission;
|
import com.massivecraft.factions.struct.Permission;
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
package com.massivecraft.factions.cmd;
|
package com.massivecraft.factions.cmd;
|
||||||
|
|
||||||
import com.massivecraft.factions.P;
|
import com.massivecraft.factions.P;
|
||||||
import com.massivecraft.factions.struct.Permission;
|
|
||||||
import com.massivecraft.factions.struct.Relation;
|
import com.massivecraft.factions.struct.Relation;
|
||||||
import com.massivecraft.factions.struct.Role;
|
import com.massivecraft.factions.struct.Role;
|
||||||
import com.massivecraft.factions.zcore.fperms.Access;
|
import com.massivecraft.factions.zcore.fperms.Access;
|
||||||
|
@ -20,17 +20,15 @@ import java.util.List;
|
|||||||
|
|
||||||
public class CmdSeeChunk extends FCommand {
|
public class CmdSeeChunk extends FCommand {
|
||||||
|
|
||||||
private boolean useParticles;
|
|
||||||
private int length;
|
|
||||||
|
|
||||||
private ParticleEffect effect;
|
|
||||||
//Used a hashmap cuz imma make a particle selection gui later, will store it where the boolean is rn.
|
//Used a hashmap cuz imma make a particle selection gui later, will store it where the boolean is rn.
|
||||||
public static HashMap<String, Boolean> seeChunkMap = new HashMap<>();
|
public static HashMap<String, Boolean> seeChunkMap = new HashMap<>();
|
||||||
Long interval = 10L;
|
Long interval = 10L;
|
||||||
|
private boolean useParticles;
|
||||||
|
private int length;
|
||||||
|
private ParticleEffect effect;
|
||||||
private int taskID = -1;
|
private int taskID = -1;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//I remade it cause of people getting mad that I had the same seechunk as drtshock
|
//I remade it cause of people getting mad that I had the same seechunk as drtshock
|
||||||
|
|
||||||
|
|
||||||
|
@ -3,15 +3,8 @@ package com.massivecraft.factions.cmd;
|
|||||||
import com.google.common.collect.ArrayListMultimap;
|
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.Faction;
|
|
||||||
import com.massivecraft.factions.struct.Permission;
|
import com.massivecraft.factions.struct.Permission;
|
||||||
import com.massivecraft.factions.zcore.util.TL;
|
import com.massivecraft.factions.zcore.util.TL;
|
||||||
import org.bukkit.World;
|
|
||||||
|
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Set;
|
|
||||||
|
|
||||||
public class CmdShowClaims extends FCommand {
|
public class CmdShowClaims extends FCommand {
|
||||||
|
|
||||||
@ -54,10 +47,6 @@ public class CmdShowClaims extends FCommand{
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -6,10 +6,8 @@ import com.massivecraft.factions.struct.Role;
|
|||||||
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;
|
||||||
import org.bukkit.Bukkit;
|
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.block.Block;
|
|
||||||
import org.bukkit.block.Dispenser;
|
import org.bukkit.block.Dispenser;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.inventory.Inventory;
|
import org.bukkit.inventory.Inventory;
|
||||||
@ -42,7 +40,6 @@ public class CmdTntFill extends FCommand {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
msg(TL.COMMAND_TNTFILL_HEADER);
|
msg(TL.COMMAND_TNTFILL_HEADER);
|
||||||
int radius = argAsInt(0, 16);
|
int radius = argAsInt(0, 16);
|
||||||
int amount = argAsInt(1, 16);
|
int amount = argAsInt(1, 16);
|
||||||
@ -121,9 +118,6 @@ public class CmdTntFill extends FCommand {
|
|||||||
me.updateInventory();
|
me.updateInventory();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void removeFromBank(int amount) {
|
private void removeFromBank(int amount) {
|
||||||
|
@ -49,8 +49,8 @@ public class CmdUnclaim extends FCommand {
|
|||||||
}
|
}
|
||||||
|
|
||||||
new SpiralTask(new FLocation(me), radius) {
|
new SpiralTask(new FLocation(me), radius) {
|
||||||
private int failCount = 0;
|
|
||||||
private final int limit = Conf.radiusClaimFailureLimit - 1;
|
private final int limit = Conf.radiusClaimFailureLimit - 1;
|
||||||
|
private int failCount = 0;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean work() {
|
public boolean work() {
|
||||||
|
@ -1,25 +1,15 @@
|
|||||||
package com.massivecraft.factions.cmd;
|
package com.massivecraft.factions.cmd;
|
||||||
|
|
||||||
import com.drtshock.playervaults.PlayerVaults;
|
|
||||||
import com.drtshock.playervaults.translations.Lang;
|
|
||||||
import com.drtshock.playervaults.vaultmanagement.UUIDVaultManager;
|
|
||||||
import com.drtshock.playervaults.vaultmanagement.VaultOperations;
|
|
||||||
import com.drtshock.playervaults.vaultmanagement.VaultViewInfo;
|
|
||||||
import com.massivecraft.factions.Board;
|
import com.massivecraft.factions.Board;
|
||||||
import com.massivecraft.factions.Conf;
|
|
||||||
import com.massivecraft.factions.FLocation;
|
import com.massivecraft.factions.FLocation;
|
||||||
import com.massivecraft.factions.P;
|
import com.massivecraft.factions.P;
|
||||||
import com.massivecraft.factions.struct.Permission;
|
import com.massivecraft.factions.struct.Permission;
|
||||||
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;
|
||||||
import org.bukkit.Bukkit;
|
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.block.Chest;
|
import org.bukkit.block.Chest;
|
||||||
import org.bukkit.configuration.file.YamlConfiguration;
|
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
import org.bukkit.event.Listener;
|
|
||||||
import org.bukkit.inventory.Inventory;
|
import org.bukkit.inventory.Inventory;
|
||||||
|
|
||||||
public class CmdVault extends FCommand {
|
public class CmdVault extends FCommand {
|
||||||
@ -79,7 +69,6 @@ public class CmdVault extends FCommand {
|
|||||||
me.openInventory(chestInv);
|
me.openInventory(chestInv);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -111,7 +111,6 @@ public abstract class FCommand extends MCommand<P> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -266,13 +265,10 @@ public abstract class FCommand extends MCommand<P> {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (you.getRole().equals(Role.ADMIN))
|
if (you.getRole().equals(Role.ADMIN)) {
|
||||||
{
|
|
||||||
i.sendMessage(p.txt.parse("<b>Only the faction admin can do that."));
|
i.sendMessage(p.txt.parse("<b>Only the faction admin can do that."));
|
||||||
|
|
||||||
}
|
} else if ((you.getRole().equals(Role.COLEADER))) {
|
||||||
else if ((you.getRole().equals(Role.COLEADER)))
|
|
||||||
{
|
|
||||||
if (i == you) {
|
if (i == you) {
|
||||||
return true;
|
return true;
|
||||||
} else {
|
} else {
|
||||||
|
@ -12,10 +12,6 @@ public class FPlayerJoinEvent extends FactionPlayerEvent implements Cancellable
|
|||||||
PlayerJoinReason reason;
|
PlayerJoinReason reason;
|
||||||
boolean cancelled = false;
|
boolean cancelled = false;
|
||||||
|
|
||||||
public enum PlayerJoinReason {
|
|
||||||
CREATE, LEADER, COMMAND
|
|
||||||
}
|
|
||||||
|
|
||||||
public FPlayerJoinEvent(FPlayer fp, Faction f, PlayerJoinReason r) {
|
public FPlayerJoinEvent(FPlayer fp, Faction f, PlayerJoinReason r) {
|
||||||
super(f, fp);
|
super(f, fp);
|
||||||
reason = r;
|
reason = r;
|
||||||
@ -39,4 +35,8 @@ public class FPlayerJoinEvent extends FactionPlayerEvent implements Cancellable
|
|||||||
public void setCancelled(boolean c) {
|
public void setCancelled(boolean c) {
|
||||||
cancelled = c;
|
cancelled = c;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public enum PlayerJoinReason {
|
||||||
|
CREATE, LEADER, COMMAND
|
||||||
|
}
|
||||||
}
|
}
|
@ -6,12 +6,8 @@ import org.bukkit.event.Cancellable;
|
|||||||
|
|
||||||
public class FPlayerLeaveEvent extends FactionPlayerEvent implements Cancellable {
|
public class FPlayerLeaveEvent extends FactionPlayerEvent implements Cancellable {
|
||||||
|
|
||||||
private PlayerLeaveReason reason;
|
|
||||||
boolean cancelled = false;
|
boolean cancelled = false;
|
||||||
|
private PlayerLeaveReason reason;
|
||||||
public enum PlayerLeaveReason {
|
|
||||||
KICKED, DISBAND, RESET, JOINOTHER, LEAVE, BANNED
|
|
||||||
}
|
|
||||||
|
|
||||||
public FPlayerLeaveEvent(FPlayer p, Faction f, PlayerLeaveReason r) {
|
public FPlayerLeaveEvent(FPlayer p, Faction f, PlayerLeaveReason r) {
|
||||||
super(f, p);
|
super(f, p);
|
||||||
@ -37,4 +33,8 @@ public class FPlayerLeaveEvent extends FactionPlayerEvent implements Cancellable
|
|||||||
// Don't let them cancel factions disbanding.
|
// Don't let them cancel factions disbanding.
|
||||||
cancelled = reason != PlayerLeaveReason.DISBAND && reason != PlayerLeaveReason.RESET && c;
|
cancelled = reason != PlayerLeaveReason.DISBAND && reason != PlayerLeaveReason.RESET && c;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public enum PlayerLeaveReason {
|
||||||
|
KICKED, DISBAND, RESET, JOINOTHER, LEAVE, BANNED
|
||||||
|
}
|
||||||
}
|
}
|
@ -24,6 +24,10 @@ public class FactionCreateEvent extends Event implements Cancellable {
|
|||||||
this.cancelled = false;
|
this.cancelled = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static HandlerList getHandlerList() {
|
||||||
|
return handlers;
|
||||||
|
}
|
||||||
|
|
||||||
public FPlayer getFPlayer() {
|
public FPlayer getFPlayer() {
|
||||||
return FPlayers.getInstance().getByPlayer(sender);
|
return FPlayers.getInstance().getByPlayer(sender);
|
||||||
}
|
}
|
||||||
@ -36,10 +40,6 @@ public class FactionCreateEvent extends Event implements Cancellable {
|
|||||||
return handlers;
|
return handlers;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static HandlerList getHandlerList() {
|
|
||||||
return handlers;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isCancelled() {
|
public boolean isCancelled() {
|
||||||
return cancelled;
|
return cancelled;
|
||||||
|
@ -16,6 +16,10 @@ public class FactionEvent extends Event {
|
|||||||
this.faction = faction;
|
this.faction = faction;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static HandlerList getHandlerList() {
|
||||||
|
return handlers;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the Faction involved in the event.
|
* Get the Faction involved in the event.
|
||||||
*
|
*
|
||||||
@ -29,8 +33,4 @@ public class FactionEvent extends Event {
|
|||||||
return handlers;
|
return handlers;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static HandlerList getHandlerList() {
|
|
||||||
return handlers;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -24,11 +24,11 @@ public class FactionRelationEvent extends Event {
|
|||||||
frel = rel;
|
frel = rel;
|
||||||
}
|
}
|
||||||
|
|
||||||
public HandlerList getHandlers() {
|
public static HandlerList getHandlerList() {
|
||||||
return handlers;
|
return handlers;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static HandlerList getHandlerList() {
|
public HandlerList getHandlers() {
|
||||||
return handlers;
|
return handlers;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -23,6 +23,7 @@ import java.util.logging.Level;
|
|||||||
|
|
||||||
public class Econ {
|
public class Econ {
|
||||||
|
|
||||||
|
private static final DecimalFormat format = new DecimalFormat(TL.ECON_FORMAT.toString());
|
||||||
private static Economy econ = null;
|
private static Economy econ = null;
|
||||||
|
|
||||||
public static void setup() {
|
public static void setup() {
|
||||||
@ -61,7 +62,6 @@ public class Econ {
|
|||||||
return econ != null;
|
return econ != null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public static void modifyUniverseMoney(double delta) {
|
public static void modifyUniverseMoney(double delta) {
|
||||||
if (!shouldBeUsed()) {
|
if (!shouldBeUsed()) {
|
||||||
return;
|
return;
|
||||||
@ -369,16 +369,16 @@ public class Econ {
|
|||||||
return amount;
|
return amount;
|
||||||
}
|
}
|
||||||
|
|
||||||
// calculate refund amount for all owned land
|
|
||||||
public static double calculateTotalLandRefund(int ownedLand) {
|
|
||||||
return calculateTotalLandValue(ownedLand) * Conf.econClaimRefundMultiplier;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
// Standard account management methods
|
// Standard account management methods
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
|
|
||||||
|
// calculate refund amount for all owned land
|
||||||
|
public static double calculateTotalLandRefund(int ownedLand) {
|
||||||
|
return calculateTotalLandValue(ownedLand) * Conf.econClaimRefundMultiplier;
|
||||||
|
}
|
||||||
|
|
||||||
public static boolean hasAccount(String name) {
|
public static boolean hasAccount(String name) {
|
||||||
return econ.hasAccount(name);
|
return econ.hasAccount(name);
|
||||||
}
|
}
|
||||||
@ -387,8 +387,6 @@ public class Econ {
|
|||||||
return econ.getBalance(account);
|
return econ.getBalance(account);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static final DecimalFormat format = new DecimalFormat(TL.ECON_FORMAT.toString());
|
|
||||||
|
|
||||||
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) {
|
||||||
|
@ -8,89 +8,16 @@ public class DynmapStyle {
|
|||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
|
|
||||||
public String lineColor = null;
|
public String lineColor = null;
|
||||||
|
|
||||||
public int getLineColor() {
|
|
||||||
return getColor(coalesce(this.lineColor, Conf.dynmapDefaultStyle.lineColor, Conf.DYNMAP_STYLE_LINE_COLOR));
|
|
||||||
}
|
|
||||||
|
|
||||||
public DynmapStyle setStrokeColor(String strokeColor) {
|
|
||||||
this.lineColor = strokeColor;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Double lineOpacity = null;
|
public Double lineOpacity = null;
|
||||||
|
|
||||||
public double getLineOpacity() {
|
|
||||||
return coalesce(this.lineOpacity, Conf.dynmapDefaultStyle.lineOpacity, Conf.DYNMAP_STYLE_LINE_OPACITY);
|
|
||||||
}
|
|
||||||
|
|
||||||
public DynmapStyle setLineOpacity(Double strokeOpacity) {
|
|
||||||
this.lineOpacity = strokeOpacity;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Integer lineWeight = null;
|
public Integer lineWeight = null;
|
||||||
|
|
||||||
public int getLineWeight() {
|
|
||||||
return coalesce(this.lineWeight, Conf.dynmapDefaultStyle.lineWeight, Conf.DYNMAP_STYLE_LINE_WEIGHT);
|
|
||||||
}
|
|
||||||
|
|
||||||
public DynmapStyle setLineWeight(Integer strokeWeight) {
|
|
||||||
this.lineWeight = strokeWeight;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String fillColor = null;
|
public String fillColor = null;
|
||||||
|
|
||||||
public int getFillColor() {
|
|
||||||
return getColor(coalesce(this.fillColor, Conf.dynmapDefaultStyle.fillColor, Conf.DYNMAP_STYLE_FILL_COLOR));
|
|
||||||
}
|
|
||||||
|
|
||||||
public DynmapStyle setFillColor(String fillColor) {
|
|
||||||
this.fillColor = fillColor;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Double fillOpacity = null;
|
public Double fillOpacity = null;
|
||||||
|
|
||||||
public double getFillOpacity() {
|
|
||||||
return coalesce(this.fillOpacity, Conf.dynmapDefaultStyle.fillOpacity, Conf.DYNMAP_STYLE_FILL_OPACITY);
|
|
||||||
}
|
|
||||||
|
|
||||||
public DynmapStyle setFillOpacity(Double fillOpacity) {
|
|
||||||
this.fillOpacity = fillOpacity;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
// NOTE: We just return the string here. We do not return the resolved Dynmap MarkerIcon object.
|
// NOTE: We just return the string here. We do not return the resolved Dynmap MarkerIcon object.
|
||||||
// The reason is we use this class in the MConf. For serialization to work Dynmap would have to be loaded and we can't require that.
|
// The reason is we use this class in the MConf. For serialization to work Dynmap would have to be loaded and we can't require that.
|
||||||
// Using dynmap is optional.
|
// Using dynmap is optional.
|
||||||
public String homeMarker = null;
|
public String homeMarker = null;
|
||||||
|
|
||||||
public String getHomeMarker() {
|
|
||||||
return coalesce(this.homeMarker, Conf.dynmapDefaultStyle.homeMarker, Conf.DYNMAP_STYLE_HOME_MARKER);
|
|
||||||
}
|
|
||||||
|
|
||||||
public DynmapStyle setHomeMarker(String homeMarker) {
|
|
||||||
this.homeMarker = homeMarker;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Boolean boost = null;
|
public Boolean boost = null;
|
||||||
|
|
||||||
public boolean getBoost() {
|
|
||||||
return coalesce(this.boost, Conf.dynmapDefaultStyle.boost, Conf.DYNMAP_STYLE_BOOST);
|
|
||||||
}
|
|
||||||
|
|
||||||
public DynmapStyle setBoost(Boolean boost) {
|
|
||||||
this.boost = boost;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
// -------------------------------------------- //
|
|
||||||
// UTIL
|
|
||||||
// -------------------------------------------- //
|
|
||||||
|
|
||||||
@SafeVarargs
|
@SafeVarargs
|
||||||
public static <T> T coalesce(T... items) {
|
public static <T> T coalesce(T... items) {
|
||||||
for (T item : items) {
|
for (T item : items) {
|
||||||
@ -110,4 +37,71 @@ public class DynmapStyle {
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int getLineColor() {
|
||||||
|
return getColor(coalesce(this.lineColor, Conf.dynmapDefaultStyle.lineColor, Conf.DYNMAP_STYLE_LINE_COLOR));
|
||||||
|
}
|
||||||
|
|
||||||
|
public DynmapStyle setStrokeColor(String strokeColor) {
|
||||||
|
this.lineColor = strokeColor;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public double getLineOpacity() {
|
||||||
|
return coalesce(this.lineOpacity, Conf.dynmapDefaultStyle.lineOpacity, Conf.DYNMAP_STYLE_LINE_OPACITY);
|
||||||
|
}
|
||||||
|
|
||||||
|
public DynmapStyle setLineOpacity(Double strokeOpacity) {
|
||||||
|
this.lineOpacity = strokeOpacity;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getLineWeight() {
|
||||||
|
return coalesce(this.lineWeight, Conf.dynmapDefaultStyle.lineWeight, Conf.DYNMAP_STYLE_LINE_WEIGHT);
|
||||||
|
}
|
||||||
|
|
||||||
|
public DynmapStyle setLineWeight(Integer strokeWeight) {
|
||||||
|
this.lineWeight = strokeWeight;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getFillColor() {
|
||||||
|
return getColor(coalesce(this.fillColor, Conf.dynmapDefaultStyle.fillColor, Conf.DYNMAP_STYLE_FILL_COLOR));
|
||||||
|
}
|
||||||
|
|
||||||
|
public DynmapStyle setFillColor(String fillColor) {
|
||||||
|
this.fillColor = fillColor;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public double getFillOpacity() {
|
||||||
|
return coalesce(this.fillOpacity, Conf.dynmapDefaultStyle.fillOpacity, Conf.DYNMAP_STYLE_FILL_OPACITY);
|
||||||
|
}
|
||||||
|
|
||||||
|
public DynmapStyle setFillOpacity(Double fillOpacity) {
|
||||||
|
this.fillOpacity = fillOpacity;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getHomeMarker() {
|
||||||
|
return coalesce(this.homeMarker, Conf.dynmapDefaultStyle.homeMarker, Conf.DYNMAP_STYLE_HOME_MARKER);
|
||||||
|
}
|
||||||
|
|
||||||
|
public DynmapStyle setHomeMarker(String homeMarker) {
|
||||||
|
this.homeMarker = homeMarker;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
// -------------------------------------------- //
|
||||||
|
// UTIL
|
||||||
|
// -------------------------------------------- //
|
||||||
|
|
||||||
|
public boolean getBoost() {
|
||||||
|
return coalesce(this.boost, Conf.dynmapDefaultStyle.boost, Conf.DYNMAP_STYLE_BOOST);
|
||||||
|
}
|
||||||
|
|
||||||
|
public DynmapStyle setBoost(Boolean boost) {
|
||||||
|
this.boost = boost;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -41,17 +41,64 @@ public class EngineDynmap {
|
|||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
|
|
||||||
private static EngineDynmap i = new EngineDynmap();
|
private static EngineDynmap i = new EngineDynmap();
|
||||||
|
public DynmapAPI dynmapApi;
|
||||||
|
public MarkerAPI markerApi;
|
||||||
|
public MarkerSet markerset;
|
||||||
|
private EngineDynmap() {
|
||||||
|
}
|
||||||
|
|
||||||
public static EngineDynmap getInstance() {
|
public static EngineDynmap getInstance() {
|
||||||
return i;
|
return i;
|
||||||
}
|
}
|
||||||
|
|
||||||
private EngineDynmap() {
|
public static String getHtmlPlayerString(Collection<FPlayer> playersOfficersList) {
|
||||||
|
StringBuilder ret = new StringBuilder();
|
||||||
|
for (FPlayer fplayer : playersOfficersList) {
|
||||||
|
if (ret.length() > 0) {
|
||||||
|
ret.append(", ");
|
||||||
|
}
|
||||||
|
ret.append(getHtmlPlayerName(fplayer));
|
||||||
|
}
|
||||||
|
return ret.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
public DynmapAPI dynmapApi;
|
public static String getHtmlPlayerName(FPlayer fplayer) {
|
||||||
public MarkerAPI markerApi;
|
if (fplayer == null) {
|
||||||
public MarkerSet markerset;
|
return "none";
|
||||||
|
}
|
||||||
|
return escapeHtml(fplayer.getName());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String escapeHtml(String string) {
|
||||||
|
StringBuilder out = new StringBuilder(Math.max(16, string.length()));
|
||||||
|
for (int i = 0; i < string.length(); i++) {
|
||||||
|
char c = string.charAt(i);
|
||||||
|
if (c > 127 || c == '"' || c == '<' || c == '>' || c == '&') {
|
||||||
|
out.append("&#");
|
||||||
|
out.append((int) c);
|
||||||
|
out.append(';');
|
||||||
|
} else {
|
||||||
|
out.append(c);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return out.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Thread Safe / Asynchronous: Yes
|
||||||
|
public static void info(String msg) {
|
||||||
|
String message = DYNMAP_INTEGRATION + msg;
|
||||||
|
System.out.println(message);
|
||||||
|
}
|
||||||
|
|
||||||
|
// -------------------------------------------- //
|
||||||
|
// UPDATE: HOMES
|
||||||
|
// -------------------------------------------- //
|
||||||
|
|
||||||
|
// Thread Safe / Asynchronous: Yes
|
||||||
|
public static void severe(String msg) {
|
||||||
|
String message = DYNMAP_INTEGRATION + ChatColor.RED.toString() + msg;
|
||||||
|
System.out.println(message);
|
||||||
|
}
|
||||||
|
|
||||||
public void init() {
|
public void init() {
|
||||||
Plugin dynmap = Bukkit.getServer().getPluginManager().getPlugin("dynmap");
|
Plugin dynmap = Bukkit.getServer().getPluginManager().getPlugin("dynmap");
|
||||||
@ -94,6 +141,10 @@ public class EngineDynmap {
|
|||||||
}, 100L, 100L);
|
}, 100L, 100L);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// -------------------------------------------- //
|
||||||
|
// UPDATE: AREAS
|
||||||
|
// -------------------------------------------- //
|
||||||
|
|
||||||
// Thread Safe / Asynchronous: No
|
// Thread Safe / Asynchronous: No
|
||||||
public boolean updateCore() {
|
public boolean updateCore() {
|
||||||
// Get DynmapAPI
|
// Get DynmapAPI
|
||||||
@ -138,10 +189,6 @@ public class EngineDynmap {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// -------------------------------------------- //
|
|
||||||
// UPDATE: HOMES
|
|
||||||
// -------------------------------------------- //
|
|
||||||
|
|
||||||
// Thread Safe / Asynchronous: Yes
|
// Thread Safe / Asynchronous: Yes
|
||||||
public Map<String, TempMarker> createHomes() {
|
public Map<String, TempMarker> createHomes() {
|
||||||
Map<String, TempMarker> ret = new HashMap<>();
|
Map<String, TempMarker> ret = new HashMap<>();
|
||||||
@ -208,7 +255,7 @@ public class EngineDynmap {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
// UPDATE: AREAS
|
// UPDATE: PLAYERSET
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
|
|
||||||
// Thread Safe: YES
|
// Thread Safe: YES
|
||||||
@ -449,6 +496,10 @@ public class EngineDynmap {
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// -------------------------------------------- //
|
||||||
|
// UTIL & SHARED
|
||||||
|
// -------------------------------------------- //
|
||||||
|
|
||||||
// Thread Safe: NO
|
// Thread Safe: NO
|
||||||
public void updateAreas(Map<String, TempAreaMarker> areas) {
|
public void updateAreas(Map<String, TempAreaMarker> areas) {
|
||||||
// Map Current
|
// Map Current
|
||||||
@ -482,10 +533,6 @@ public class EngineDynmap {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// -------------------------------------------- //
|
|
||||||
// UPDATE: PLAYERSET
|
|
||||||
// -------------------------------------------- //
|
|
||||||
|
|
||||||
// Thread Safe / Asynchronous: Yes
|
// Thread Safe / Asynchronous: Yes
|
||||||
public String createPlayersetId(Faction faction) {
|
public String createPlayersetId(Faction faction) {
|
||||||
if (faction == null) {
|
if (faction == null) {
|
||||||
@ -589,10 +636,6 @@ public class EngineDynmap {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// -------------------------------------------- //
|
|
||||||
// UTIL & SHARED
|
|
||||||
// -------------------------------------------- //
|
|
||||||
|
|
||||||
// Thread Safe / Asynchronous: Yes
|
// Thread Safe / Asynchronous: Yes
|
||||||
private String getDescription(Faction faction) {
|
private String getDescription(Faction faction) {
|
||||||
String ret = "<div class=\"regioninfo\">" + Conf.dynmapDescription + "</div>";
|
String ret = "<div class=\"regioninfo\">" + Conf.dynmapDescription + "</div>";
|
||||||
@ -653,39 +696,6 @@ public class EngineDynmap {
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String getHtmlPlayerString(Collection<FPlayer> playersOfficersList) {
|
|
||||||
StringBuilder ret = new StringBuilder();
|
|
||||||
for (FPlayer fplayer : playersOfficersList) {
|
|
||||||
if (ret.length() > 0) {
|
|
||||||
ret.append(", ");
|
|
||||||
}
|
|
||||||
ret.append(getHtmlPlayerName(fplayer));
|
|
||||||
}
|
|
||||||
return ret.toString();
|
|
||||||
}
|
|
||||||
|
|
||||||
public static String getHtmlPlayerName(FPlayer fplayer) {
|
|
||||||
if (fplayer == null) {
|
|
||||||
return "none";
|
|
||||||
}
|
|
||||||
return escapeHtml(fplayer.getName());
|
|
||||||
}
|
|
||||||
|
|
||||||
public static String escapeHtml(String string) {
|
|
||||||
StringBuilder out = new StringBuilder(Math.max(16, string.length()));
|
|
||||||
for (int i = 0; i < string.length(); i++) {
|
|
||||||
char c = string.charAt(i);
|
|
||||||
if (c > 127 || c == '"' || c == '<' || c == '>' || c == '&') {
|
|
||||||
out.append("&#");
|
|
||||||
out.append((int) c);
|
|
||||||
out.append(';');
|
|
||||||
} else {
|
|
||||||
out.append(c);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return out.toString();
|
|
||||||
}
|
|
||||||
|
|
||||||
// Thread Safe / Asynchronous: Yes
|
// Thread Safe / Asynchronous: Yes
|
||||||
private boolean isVisible(Faction faction, String world) {
|
private boolean isVisible(Faction faction, String world) {
|
||||||
if (faction == null) {
|
if (faction == null) {
|
||||||
@ -727,22 +737,6 @@ public class EngineDynmap {
|
|||||||
return Conf.dynmapDefaultStyle;
|
return Conf.dynmapDefaultStyle;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Thread Safe / Asynchronous: Yes
|
|
||||||
public static void info(String msg) {
|
|
||||||
String message = DYNMAP_INTEGRATION + msg;
|
|
||||||
System.out.println(message);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Thread Safe / Asynchronous: Yes
|
|
||||||
public static void severe(String msg) {
|
|
||||||
String message = DYNMAP_INTEGRATION + ChatColor.RED.toString() + msg;
|
|
||||||
System.out.println(message);
|
|
||||||
}
|
|
||||||
|
|
||||||
enum Direction {
|
|
||||||
XPLUS, ZPLUS, XMINUS, ZMINUS
|
|
||||||
}
|
|
||||||
|
|
||||||
// Find all contiguous blocks, set in target and clear in source
|
// Find all contiguous blocks, set in target and clear in source
|
||||||
private int floodFillTarget(TileFlags source, TileFlags destination, int x, int y) {
|
private int floodFillTarget(TileFlags source, TileFlags destination, int x, int y) {
|
||||||
int cnt = 0;
|
int cnt = 0;
|
||||||
@ -773,4 +767,8 @@ public class EngineDynmap {
|
|||||||
}
|
}
|
||||||
return cnt;
|
return cnt;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
enum Direction {
|
||||||
|
XPLUS, ZPLUS, XMINUS, ZMINUS
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -27,6 +27,32 @@ public class TempAreaMarker {
|
|||||||
// CREATE
|
// CREATE
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
|
|
||||||
|
public static boolean equals(AreaMarker marker, double x[], double z[]) {
|
||||||
|
int length = marker.getCornerCount();
|
||||||
|
|
||||||
|
if (x.length != length) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (z.length != length) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i = 0; i < length; i++) {
|
||||||
|
if (marker.getCornerX(i) != x[i]) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (marker.getCornerZ(i) != z[i]) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// -------------------------------------------- //
|
||||||
|
// UPDATE
|
||||||
|
// -------------------------------------------- //
|
||||||
|
|
||||||
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
|
||||||
);
|
);
|
||||||
@ -51,7 +77,7 @@ public class TempAreaMarker {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
// UPDATE
|
// UTIL
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
|
|
||||||
public void update(AreaMarker marker) {
|
public void update(AreaMarker marker) {
|
||||||
@ -87,30 +113,4 @@ public class TempAreaMarker {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// -------------------------------------------- //
|
|
||||||
// UTIL
|
|
||||||
// -------------------------------------------- //
|
|
||||||
|
|
||||||
public static boolean equals(AreaMarker marker, double x[], double z[]) {
|
|
||||||
int length = marker.getCornerCount();
|
|
||||||
|
|
||||||
if (x.length != length) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if (z.length != length) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (int i = 0; i < length; i++) {
|
|
||||||
if (marker.getCornerX(i) != x[i]) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if (marker.getCornerZ(i) != z[i]) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -23,6 +23,18 @@ public class TempMarker {
|
|||||||
// CREATE
|
// CREATE
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
|
|
||||||
|
public static MarkerIcon getMarkerIcon(MarkerAPI markerApi, String name) {
|
||||||
|
MarkerIcon ret = markerApi.getMarkerIcon(name);
|
||||||
|
if (ret == null) {
|
||||||
|
ret = markerApi.getMarkerIcon(Conf.DYNMAP_STYLE_HOME_MARKER);
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
// -------------------------------------------- //
|
||||||
|
// UPDATE
|
||||||
|
// -------------------------------------------- //
|
||||||
|
|
||||||
public Marker create(MarkerAPI markerApi, MarkerSet markerset, String markerId) {
|
public Marker create(MarkerAPI markerApi, MarkerSet markerset, String markerId) {
|
||||||
Marker ret = markerset.createMarker(markerId, this.label, this.world, this.x, this.y, this.z, getMarkerIcon(markerApi, this.iconName), false // not persistent
|
Marker ret = markerset.createMarker(markerId, this.label, this.world, this.x, this.y, this.z, getMarkerIcon(markerApi, this.iconName), false // not persistent
|
||||||
);
|
);
|
||||||
@ -37,7 +49,7 @@ public class TempMarker {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
// UPDATE
|
// UTIL
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
|
|
||||||
public void update(MarkerAPI markerApi, Marker marker) {
|
public void update(MarkerAPI markerApi, Marker marker) {
|
||||||
@ -59,16 +71,4 @@ public class TempMarker {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// -------------------------------------------- //
|
|
||||||
// UTIL
|
|
||||||
// -------------------------------------------- //
|
|
||||||
|
|
||||||
public static MarkerIcon getMarkerIcon(MarkerAPI markerApi, String name) {
|
|
||||||
MarkerIcon ret = markerApi.getMarkerIcon(name);
|
|
||||||
if (ret == null) {
|
|
||||||
ret = markerApi.getMarkerIcon(Conf.DYNMAP_STYLE_HOME_MARKER);
|
|
||||||
}
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -26,6 +26,123 @@ public class FactionsBlockListener implements Listener {
|
|||||||
this.p = p;
|
this.p = p;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static boolean playerCanBuildDestroyBlock(Player player, Location location, String action, boolean justCheck) {
|
||||||
|
String name = player.getName();
|
||||||
|
if (Conf.playersWhoBypassAllProtection.contains(name)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
FPlayer me = FPlayers.getInstance().getById(player.getUniqueId().toString());
|
||||||
|
if (me.isAdminBypassing()) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
FLocation loc = new FLocation(location);
|
||||||
|
Faction otherFaction = Board.getInstance().getFactionAt(loc);
|
||||||
|
|
||||||
|
if (otherFaction.isWilderness()) {
|
||||||
|
if (Conf.worldGuardBuildPriority && Worldguard.playerCanBuild(player, location)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!Conf.wildernessDenyBuild || Conf.worldsNoWildernessProtection.contains(location.getWorld().getName())) {
|
||||||
|
return true; // This is not faction territory. Use whatever you like here.
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!justCheck) {
|
||||||
|
me.msg("<b>You can't " + action + " in the wilderness.");
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
} else if (otherFaction.isSafeZone()) {
|
||||||
|
if (Conf.worldGuardBuildPriority && Worldguard.playerCanBuild(player, location)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!Conf.safeZoneDenyBuild || Permission.MANAGE_SAFE_ZONE.has(player)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!justCheck) {
|
||||||
|
me.msg("<b>You can't " + action + " in a safe zone.");
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
} else if (otherFaction.isWarZone()) {
|
||||||
|
if (Conf.worldGuardBuildPriority && Worldguard.playerCanBuild(player, location)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!Conf.warZoneDenyBuild || Permission.MANAGE_WAR_ZONE.has(player)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!justCheck) {
|
||||||
|
me.msg("<b>You can't " + action + " in a war zone.");
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (P.p.getConfig().getBoolean("hcf.raidable", false) && otherFaction.getLandRounded() >= otherFaction.getPowerRounded()) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
Faction myFaction = me.getFaction();
|
||||||
|
Relation rel = myFaction.getRelationTo(otherFaction);
|
||||||
|
boolean online = otherFaction.hasPlayersOnline();
|
||||||
|
boolean pain = !justCheck && rel.confPainBuild(online);
|
||||||
|
boolean deny = rel.confDenyBuild(online);
|
||||||
|
|
||||||
|
// hurt the player for building/destroying in other territory?
|
||||||
|
if (pain) {
|
||||||
|
player.damage(Conf.actionDeniedPainAmount);
|
||||||
|
|
||||||
|
if (!deny) {
|
||||||
|
me.msg("<b>It is painful to try to " + action + " in the territory of " + otherFaction.getTag(myFaction));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Access access = otherFaction.getAccess(me, PermissableAction.fromString(action));
|
||||||
|
if (access != null && access != Access.UNDEFINED) {
|
||||||
|
// TODO: Update this once new access values are added other than just allow / deny.
|
||||||
|
if (access == Access.DENY) {
|
||||||
|
me.msg(TL.GENERIC_NOPERMISSION, action);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true; // has to be allow
|
||||||
|
}
|
||||||
|
|
||||||
|
// cancel building/destroying in other territory?
|
||||||
|
if (deny) {
|
||||||
|
if (!justCheck) {
|
||||||
|
me.msg("<b>You can't " + action + " in the territory of " + otherFaction.getTag(myFaction));
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Also cancel and/or cause pain if player doesn't have ownership rights for this claim
|
||||||
|
if (Conf.ownedAreasEnabled && (Conf.ownedAreaDenyBuild || Conf.ownedAreaPainBuild) && !otherFaction.playerHasOwnershipRights(me, loc)) {
|
||||||
|
if (!pain && Conf.ownedAreaPainBuild && !justCheck) {
|
||||||
|
player.damage(Conf.actionDeniedPainAmount);
|
||||||
|
|
||||||
|
if (!Conf.ownedAreaDenyBuild) {
|
||||||
|
me.msg("<b>It is painful to try to " + action + " in this territory, it is owned by: " + otherFaction.getOwnerListString(loc));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (Conf.ownedAreaDenyBuild) {
|
||||||
|
if (!justCheck) {
|
||||||
|
me.msg("<b>You can't " + action + " in this territory, it is owned by: " + otherFaction.getOwnerListString(loc));
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
|
@EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
|
||||||
public void onBlockPlace(BlockPlaceEvent event) {
|
public void onBlockPlace(BlockPlaceEvent event) {
|
||||||
if (!event.canBuild()) {
|
if (!event.canBuild()) {
|
||||||
@ -189,121 +306,4 @@ public class FactionsBlockListener implements Listener {
|
|||||||
|
|
||||||
return !rel.confDenyBuild(otherFaction.hasPlayersOnline());
|
return !rel.confDenyBuild(otherFaction.hasPlayersOnline());
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean playerCanBuildDestroyBlock(Player player, Location location, String action, boolean justCheck) {
|
|
||||||
String name = player.getName();
|
|
||||||
if (Conf.playersWhoBypassAllProtection.contains(name)) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
FPlayer me = FPlayers.getInstance().getById(player.getUniqueId().toString());
|
|
||||||
if (me.isAdminBypassing()) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
FLocation loc = new FLocation(location);
|
|
||||||
Faction otherFaction = Board.getInstance().getFactionAt(loc);
|
|
||||||
|
|
||||||
if (otherFaction.isWilderness()) {
|
|
||||||
if (Conf.worldGuardBuildPriority && Worldguard.playerCanBuild(player, location)) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!Conf.wildernessDenyBuild || Conf.worldsNoWildernessProtection.contains(location.getWorld().getName())) {
|
|
||||||
return true; // This is not faction territory. Use whatever you like here.
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!justCheck) {
|
|
||||||
me.msg("<b>You can't " + action + " in the wilderness.");
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
} else if (otherFaction.isSafeZone()) {
|
|
||||||
if (Conf.worldGuardBuildPriority && Worldguard.playerCanBuild(player, location)) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!Conf.safeZoneDenyBuild || Permission.MANAGE_SAFE_ZONE.has(player)) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!justCheck) {
|
|
||||||
me.msg("<b>You can't " + action + " in a safe zone.");
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
} else if (otherFaction.isWarZone()) {
|
|
||||||
if (Conf.worldGuardBuildPriority && Worldguard.playerCanBuild(player, location)) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!Conf.warZoneDenyBuild || Permission.MANAGE_WAR_ZONE.has(player)) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!justCheck) {
|
|
||||||
me.msg("<b>You can't " + action + " in a war zone.");
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if (P.p.getConfig().getBoolean("hcf.raidable", false) && otherFaction.getLandRounded() >= otherFaction.getPowerRounded()) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
Faction myFaction = me.getFaction();
|
|
||||||
Relation rel = myFaction.getRelationTo(otherFaction);
|
|
||||||
boolean online = otherFaction.hasPlayersOnline();
|
|
||||||
boolean pain = !justCheck && rel.confPainBuild(online);
|
|
||||||
boolean deny = rel.confDenyBuild(online);
|
|
||||||
|
|
||||||
// hurt the player for building/destroying in other territory?
|
|
||||||
if (pain) {
|
|
||||||
player.damage(Conf.actionDeniedPainAmount);
|
|
||||||
|
|
||||||
if (!deny) {
|
|
||||||
me.msg("<b>It is painful to try to " + action + " in the territory of " + otherFaction.getTag(myFaction));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Access access = otherFaction.getAccess(me, PermissableAction.fromString(action));
|
|
||||||
if (access != null && access != Access.UNDEFINED) {
|
|
||||||
// TODO: Update this once new access values are added other than just allow / deny.
|
|
||||||
if (access == Access.DENY) {
|
|
||||||
me.msg(TL.GENERIC_NOPERMISSION, action);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
return true; // has to be allow
|
|
||||||
}
|
|
||||||
|
|
||||||
// cancel building/destroying in other territory?
|
|
||||||
if (deny) {
|
|
||||||
if (!justCheck) {
|
|
||||||
me.msg("<b>You can't " + action + " in the territory of " + otherFaction.getTag(myFaction));
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Also cancel and/or cause pain if player doesn't have ownership rights for this claim
|
|
||||||
if (Conf.ownedAreasEnabled && (Conf.ownedAreaDenyBuild || Conf.ownedAreaPainBuild) && !otherFaction.playerHasOwnershipRights(me, loc)) {
|
|
||||||
if (!pain && Conf.ownedAreaPainBuild && !justCheck) {
|
|
||||||
player.damage(Conf.actionDeniedPainAmount);
|
|
||||||
|
|
||||||
if (!Conf.ownedAreaDenyBuild) {
|
|
||||||
me.msg("<b>It is painful to try to " + action + " in this territory, it is owned by: " + otherFaction.getOwnerListString(loc));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (Conf.ownedAreaDenyBuild) {
|
|
||||||
if (!justCheck) {
|
|
||||||
me.msg("<b>You can't " + action + " in this territory, it is owned by: " + otherFaction.getOwnerListString(loc));
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -29,6 +29,7 @@ import java.util.*;
|
|||||||
|
|
||||||
public class FactionsEntityListener implements Listener {
|
public class FactionsEntityListener implements Listener {
|
||||||
|
|
||||||
|
private static final Set<PotionEffectType> badPotionEffects = new LinkedHashSet<>(Arrays.asList(PotionEffectType.BLINDNESS, PotionEffectType.CONFUSION, PotionEffectType.HARM, PotionEffectType.HUNGER, PotionEffectType.POISON, PotionEffectType.SLOW, PotionEffectType.SLOW_DIGGING, PotionEffectType.WEAKNESS, PotionEffectType.WITHER));
|
||||||
public P p;
|
public P p;
|
||||||
|
|
||||||
public FactionsEntityListener(P p) {
|
public FactionsEntityListener(P p) {
|
||||||
@ -288,7 +289,6 @@ public class FactionsEntityListener implements Listener {
|
|||||||
// No condition retained, destroy the block!
|
// No condition retained, destroy the block!
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// mainly for flaming arrows; don't want allies or people in safe zones to be ignited even after damage event is cancelled
|
// mainly for flaming arrows; don't want allies or people in safe zones to be ignited even after damage event is cancelled
|
||||||
@EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
|
@EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
|
||||||
public void onEntityCombustByEntity(EntityCombustByEntityEvent event) {
|
public void onEntityCombustByEntity(EntityCombustByEntityEvent event) {
|
||||||
@ -298,8 +298,6 @@ public class FactionsEntityListener implements Listener {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static final Set<PotionEffectType> badPotionEffects = new LinkedHashSet<>(Arrays.asList(PotionEffectType.BLINDNESS, PotionEffectType.CONFUSION, PotionEffectType.HARM, PotionEffectType.HUNGER, PotionEffectType.POISON, PotionEffectType.SLOW, PotionEffectType.SLOW_DIGGING, PotionEffectType.WEAKNESS, PotionEffectType.WITHER));
|
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
|
@EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
|
||||||
public void onPotionSplashEvent(PotionSplashEvent event) {
|
public void onPotionSplashEvent(PotionSplashEvent event) {
|
||||||
// see if the potion has a harmful effect
|
// see if the potion has a harmful effect
|
||||||
|
@ -13,6 +13,10 @@ import org.bukkit.event.player.PlayerTeleportEvent;
|
|||||||
|
|
||||||
public class FactionsExploitListener implements Listener {
|
public class FactionsExploitListener implements Listener {
|
||||||
|
|
||||||
|
public static boolean clippingThrough(Location target, Location from, double thickness) {
|
||||||
|
return ((from.getX() > target.getX() && (from.getX() - target.getX() < thickness)) || (target.getX() > from.getX() && (target.getX() - from.getX() < thickness)) || (from.getZ() > target.getZ() && (from.getZ() - target.getZ() < thickness)) || (target.getZ() > from.getZ() && (target.getZ() - from.getZ() < thickness)));
|
||||||
|
}
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
|
@EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
|
||||||
public void obsidianGenerator(BlockFromToEvent event) {
|
public void obsidianGenerator(BlockFromToEvent event) {
|
||||||
if (!Conf.handleExploitObsidianGenerators) {
|
if (!Conf.handleExploitObsidianGenerators) {
|
||||||
@ -54,8 +58,4 @@ public class FactionsExploitListener implements Listener {
|
|||||||
event.setTo(target);
|
event.setTo(target);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean clippingThrough(Location target, Location from, double thickness) {
|
|
||||||
return ((from.getX() > target.getX() && (from.getX() - target.getX() < thickness)) || (target.getX() > from.getX() && (target.getX() - from.getX() < thickness)) || (from.getZ() > target.getZ() && (from.getZ() - target.getZ() < thickness)) || (target.getZ() > from.getZ() && (target.getZ() - from.getZ() < thickness)));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -14,20 +14,6 @@ public class BufferedObjective {
|
|||||||
private static final Method addEntryMethod;
|
private static final Method addEntryMethod;
|
||||||
private static final int MAX_LINE_LENGTH;
|
private static final int MAX_LINE_LENGTH;
|
||||||
|
|
||||||
private final Scoreboard scoreboard;
|
|
||||||
private final String baseName;
|
|
||||||
|
|
||||||
private Objective current;
|
|
||||||
private List<Team> currentTeams = new ArrayList<>();
|
|
||||||
private String title;
|
|
||||||
private DisplaySlot displaySlot;
|
|
||||||
|
|
||||||
private int objPtr;
|
|
||||||
private int teamPtr;
|
|
||||||
private boolean requiresUpdate = false;
|
|
||||||
|
|
||||||
private final Map<Integer, String> contents = new HashMap<>();
|
|
||||||
|
|
||||||
static {
|
static {
|
||||||
// Check for long line support.
|
// Check for long line support.
|
||||||
// We require use of Spigot's `addEntry(String)` method on
|
// We require use of Spigot's `addEntry(String)` method on
|
||||||
@ -48,6 +34,17 @@ public class BufferedObjective {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private final Scoreboard scoreboard;
|
||||||
|
private final String baseName;
|
||||||
|
private final Map<Integer, String> contents = new HashMap<>();
|
||||||
|
private Objective current;
|
||||||
|
private List<Team> currentTeams = new ArrayList<>();
|
||||||
|
private String title;
|
||||||
|
private DisplaySlot displaySlot;
|
||||||
|
private int objPtr;
|
||||||
|
private int teamPtr;
|
||||||
|
private boolean requiresUpdate = false;
|
||||||
|
|
||||||
public BufferedObjective(Scoreboard scoreboard) {
|
public BufferedObjective(Scoreboard scoreboard) {
|
||||||
this.scoreboard = scoreboard;
|
this.scoreboard = scoreboard;
|
||||||
this.baseName = createBaseName();
|
this.baseName = createBaseName();
|
||||||
|
@ -22,6 +22,20 @@ public class FScoreboard {
|
|||||||
private FSidebarProvider temporaryProvider;
|
private FSidebarProvider temporaryProvider;
|
||||||
private boolean removed = false;
|
private boolean removed = false;
|
||||||
|
|
||||||
|
private FScoreboard(FPlayer fplayer) {
|
||||||
|
this.fplayer = fplayer;
|
||||||
|
|
||||||
|
if (isSupportedByServer()) {
|
||||||
|
this.scoreboard = Bukkit.getScoreboardManager().getNewScoreboard();
|
||||||
|
this.bufferedObjective = new BufferedObjective(scoreboard);
|
||||||
|
|
||||||
|
fplayer.getPlayer().setScoreboard(scoreboard);
|
||||||
|
} else {
|
||||||
|
this.scoreboard = null;
|
||||||
|
this.bufferedObjective = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Glowstone doesn't support scoreboards.
|
// Glowstone doesn't support scoreboards.
|
||||||
// All references to this and related workarounds can be safely
|
// All references to this and related workarounds can be safely
|
||||||
// removed when scoreboards are supported.
|
// removed when scoreboards are supported.
|
||||||
@ -56,20 +70,6 @@ public class FScoreboard {
|
|||||||
return fscoreboards.get(FPlayers.getInstance().getByPlayer(player));
|
return fscoreboards.get(FPlayers.getInstance().getByPlayer(player));
|
||||||
}
|
}
|
||||||
|
|
||||||
private FScoreboard(FPlayer fplayer) {
|
|
||||||
this.fplayer = fplayer;
|
|
||||||
|
|
||||||
if (isSupportedByServer()) {
|
|
||||||
this.scoreboard = Bukkit.getScoreboardManager().getNewScoreboard();
|
|
||||||
this.bufferedObjective = new BufferedObjective(scoreboard);
|
|
||||||
|
|
||||||
fplayer.getPlayer().setScoreboard(scoreboard);
|
|
||||||
} else {
|
|
||||||
this.scoreboard = null;
|
|
||||||
this.bufferedObjective = null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
protected FPlayer getFPlayer() {
|
protected FPlayer getFPlayer() {
|
||||||
return fplayer;
|
return fplayer;
|
||||||
}
|
}
|
||||||
|
@ -13,14 +13,22 @@ import java.util.*;
|
|||||||
public class FTeamWrapper {
|
public class FTeamWrapper {
|
||||||
private static final Map<Faction, FTeamWrapper> wrappers = new HashMap<>();
|
private static final Map<Faction, FTeamWrapper> wrappers = new HashMap<>();
|
||||||
private static final List<FScoreboard> tracking = new ArrayList<>();
|
private static final List<FScoreboard> tracking = new ArrayList<>();
|
||||||
private static int factionTeamPtr;
|
|
||||||
private static final Set<Faction> updating = new HashSet<>();
|
private static final Set<Faction> updating = new HashSet<>();
|
||||||
|
private static int factionTeamPtr;
|
||||||
private final Map<FScoreboard, Team> teams = new HashMap<>();
|
private final Map<FScoreboard, Team> teams = new HashMap<>();
|
||||||
private final String teamName;
|
private final String teamName;
|
||||||
private final Faction faction;
|
private final Faction faction;
|
||||||
private final Set<OfflinePlayer> members = new HashSet<>();
|
private final Set<OfflinePlayer> members = new HashSet<>();
|
||||||
|
|
||||||
|
private FTeamWrapper(Faction faction) {
|
||||||
|
this.teamName = "faction_" + (factionTeamPtr++);
|
||||||
|
this.faction = faction;
|
||||||
|
|
||||||
|
for (FScoreboard fboard : tracking) {
|
||||||
|
add(fboard);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public static void applyUpdatesLater(final Faction faction) {
|
public static void applyUpdatesLater(final Faction faction) {
|
||||||
if (!FScoreboard.isSupportedByServer()) {
|
if (!FScoreboard.isSupportedByServer()) {
|
||||||
return;
|
return;
|
||||||
@ -130,16 +138,6 @@ public class FTeamWrapper {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private FTeamWrapper(Faction faction) {
|
|
||||||
this.teamName = "faction_" + (factionTeamPtr++);
|
|
||||||
this.faction = faction;
|
|
||||||
|
|
||||||
for (FScoreboard fboard : tracking) {
|
|
||||||
add(fboard);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void add(FScoreboard fboard) {
|
private void add(FScoreboard fboard) {
|
||||||
Scoreboard board = fboard.getScoreboard();
|
Scoreboard board = fboard.getScoreboard();
|
||||||
Team team = board.registerNewTeam(teamName);
|
Team team = board.registerNewTeam(teamName);
|
||||||
|
@ -32,14 +32,6 @@ public enum Role implements Permissable {
|
|||||||
this.translation = translation;
|
this.translation = translation;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isAtLeast(Role role) {
|
|
||||||
return this.value >= role.value;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isAtMost(Role role) {
|
|
||||||
return this.value <= role.value;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static Role getRelative(Role role, int relative) {
|
public static Role getRelative(Role role, int relative) {
|
||||||
return Role.getByValue(role.value + relative);
|
return Role.getByValue(role.value + relative);
|
||||||
}
|
}
|
||||||
@ -81,6 +73,14 @@ public enum Role implements Permissable {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isAtLeast(Role role) {
|
||||||
|
return this.value >= role.value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isAtMost(Role role) {
|
||||||
|
return this.value <= role.value;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return this.nicename;
|
return this.nicename;
|
||||||
|
@ -7,49 +7,6 @@ import java.util.ArrayList;
|
|||||||
|
|
||||||
public class AsciiCompass {
|
public class AsciiCompass {
|
||||||
|
|
||||||
public enum Point {
|
|
||||||
|
|
||||||
N('N'),
|
|
||||||
NE('/'),
|
|
||||||
E('E'),
|
|
||||||
SE('\\'),
|
|
||||||
S('S'),
|
|
||||||
SW('/'),
|
|
||||||
W('W'),
|
|
||||||
NW('\\');
|
|
||||||
|
|
||||||
public final char asciiChar;
|
|
||||||
|
|
||||||
Point(final char asciiChar) {
|
|
||||||
this.asciiChar = asciiChar;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String toString() {
|
|
||||||
return String.valueOf(this.asciiChar);
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getTranslation() {
|
|
||||||
if (this == N) {
|
|
||||||
return TL.COMPASS_SHORT_NORTH.toString();
|
|
||||||
}
|
|
||||||
if (this == E) {
|
|
||||||
return TL.COMPASS_SHORT_EAST.toString();
|
|
||||||
}
|
|
||||||
if (this == S) {
|
|
||||||
return TL.COMPASS_SHORT_SOUTH.toString();
|
|
||||||
}
|
|
||||||
if (this == W) {
|
|
||||||
return TL.COMPASS_SHORT_WEST.toString();
|
|
||||||
}
|
|
||||||
return toString();
|
|
||||||
}
|
|
||||||
|
|
||||||
public String toString(boolean isActive, ChatColor colorActive, String colorDefault) {
|
|
||||||
return (isActive ? colorActive : colorDefault) + getTranslation();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static Point getCompassPointForDirection(double inDegrees) {
|
public static Point getCompassPointForDirection(double inDegrees) {
|
||||||
double degrees = (inDegrees - 180) % 360;
|
double degrees = (inDegrees - 180) % 360;
|
||||||
if (degrees < 0) {
|
if (degrees < 0) {
|
||||||
@ -107,4 +64,47 @@ public class AsciiCompass {
|
|||||||
public static ArrayList<String> getAsciiCompass(double inDegrees, ChatColor colorActive, String colorDefault) {
|
public static ArrayList<String> getAsciiCompass(double inDegrees, ChatColor colorActive, String colorDefault) {
|
||||||
return getAsciiCompass(getCompassPointForDirection(inDegrees), colorActive, colorDefault);
|
return getAsciiCompass(getCompassPointForDirection(inDegrees), colorActive, colorDefault);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public enum Point {
|
||||||
|
|
||||||
|
N('N'),
|
||||||
|
NE('/'),
|
||||||
|
E('E'),
|
||||||
|
SE('\\'),
|
||||||
|
S('S'),
|
||||||
|
SW('/'),
|
||||||
|
W('W'),
|
||||||
|
NW('\\');
|
||||||
|
|
||||||
|
public final char asciiChar;
|
||||||
|
|
||||||
|
Point(final char asciiChar) {
|
||||||
|
this.asciiChar = asciiChar;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return String.valueOf(this.asciiChar);
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getTranslation() {
|
||||||
|
if (this == N) {
|
||||||
|
return TL.COMPASS_SHORT_NORTH.toString();
|
||||||
|
}
|
||||||
|
if (this == E) {
|
||||||
|
return TL.COMPASS_SHORT_EAST.toString();
|
||||||
|
}
|
||||||
|
if (this == S) {
|
||||||
|
return TL.COMPASS_SHORT_SOUTH.toString();
|
||||||
|
}
|
||||||
|
if (this == W) {
|
||||||
|
return TL.COMPASS_SHORT_WEST.toString();
|
||||||
|
}
|
||||||
|
return toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
public String toString(boolean isActive, ChatColor colorActive, String colorDefault) {
|
||||||
|
return (isActive ? colorActive : colorDefault) + getTranslation();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -39,8 +39,6 @@ public class ClipPlaceholderAPIManager extends PlaceholderExpansion implements R
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Relational placeholders
|
// Relational placeholders
|
||||||
@Override
|
@Override
|
||||||
public String onPlaceholderRequest(Player p1, Player p2, String placeholder) {
|
public String onPlaceholderRequest(Player p1, Player p2, String placeholder) {
|
||||||
|
@ -15,6 +15,7 @@ import java.util.Map;
|
|||||||
|
|
||||||
public final class EnumTypeAdapter<T extends Enum<T>> extends TypeAdapter<T> {
|
public final class EnumTypeAdapter<T extends Enum<T>> extends TypeAdapter<T> {
|
||||||
|
|
||||||
|
public static final TypeAdapterFactory ENUM_FACTORY = newEnumTypeHierarchyFactory();
|
||||||
private final Map<String, T> nameToConstant = new HashMap<>();
|
private final Map<String, T> nameToConstant = new HashMap<>();
|
||||||
private final Map<T, String> constantToName = new HashMap<>();
|
private final Map<T, String> constantToName = new HashMap<>();
|
||||||
|
|
||||||
@ -34,20 +35,6 @@ public final class EnumTypeAdapter<T extends Enum<T>> extends TypeAdapter<T> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public T read(JsonReader in) throws IOException {
|
|
||||||
if (in.peek() == JsonToken.NULL) {
|
|
||||||
in.nextNull();
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
return nameToConstant.get(in.nextString());
|
|
||||||
}
|
|
||||||
|
|
||||||
public void write(JsonWriter out, T value) throws IOException {
|
|
||||||
out.value(value == null ? null : constantToName.get(value));
|
|
||||||
}
|
|
||||||
|
|
||||||
public static final TypeAdapterFactory ENUM_FACTORY = newEnumTypeHierarchyFactory();
|
|
||||||
|
|
||||||
public static <TT> TypeAdapterFactory newEnumTypeHierarchyFactory() {
|
public static <TT> TypeAdapterFactory newEnumTypeHierarchyFactory() {
|
||||||
return new TypeAdapterFactory() {
|
return new TypeAdapterFactory() {
|
||||||
@SuppressWarnings({"rawtypes", "unchecked"})
|
@SuppressWarnings({"rawtypes", "unchecked"})
|
||||||
@ -64,4 +51,16 @@ public final class EnumTypeAdapter<T extends Enum<T>> extends TypeAdapter<T> {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public T read(JsonReader in) throws IOException {
|
||||||
|
if (in.peek() == JsonToken.NULL) {
|
||||||
|
in.nextNull();
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return nameToConstant.get(in.nextString());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void write(JsonWriter out, T value) throws IOException {
|
||||||
|
out.value(value == null ? null : constantToName.get(value));
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,12 +1,6 @@
|
|||||||
package com.massivecraft.factions.util;
|
package com.massivecraft.factions.util;
|
||||||
|
|
||||||
import org.bukkit.Bukkit;
|
|
||||||
import org.bukkit.Material;
|
|
||||||
import org.bukkit.enchantments.Enchantment;
|
|
||||||
import org.bukkit.entity.Item;
|
|
||||||
import org.bukkit.inventory.Inventory;
|
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
import org.bukkit.inventory.meta.ItemMeta;
|
|
||||||
import org.bukkit.util.io.BukkitObjectInputStream;
|
import org.bukkit.util.io.BukkitObjectInputStream;
|
||||||
import org.bukkit.util.io.BukkitObjectOutputStream;
|
import org.bukkit.util.io.BukkitObjectOutputStream;
|
||||||
import org.yaml.snakeyaml.external.biz.base64Coder.Base64Coder;
|
import org.yaml.snakeyaml.external.biz.base64Coder.Base64Coder;
|
||||||
@ -14,7 +8,6 @@ import org.yaml.snakeyaml.external.biz.base64Coder.Base64Coder;
|
|||||||
import java.io.ByteArrayInputStream;
|
import java.io.ByteArrayInputStream;
|
||||||
import java.io.ByteArrayOutputStream;
|
import java.io.ByteArrayOutputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
public class InventoryUtil {
|
public class InventoryUtil {
|
||||||
|
|
||||||
|
@ -18,6 +18,9 @@ import java.util.logging.Level;
|
|||||||
|
|
||||||
public class MiscUtil {
|
public class MiscUtil {
|
||||||
|
|
||||||
|
/// TODO create tag whitelist!!
|
||||||
|
public static HashSet<String> substanceChars = new HashSet<>(Arrays.asList("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"));
|
||||||
|
|
||||||
public static EntityType creatureTypeFromEntity(Entity entity) {
|
public static EntityType creatureTypeFromEntity(Entity entity) {
|
||||||
if (!(entity instanceof Creature)) {
|
if (!(entity instanceof Creature)) {
|
||||||
return null;
|
return null;
|
||||||
@ -46,9 +49,6 @@ public class MiscUtil {
|
|||||||
return values;
|
return values;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// TODO create tag whitelist!!
|
|
||||||
public static HashSet<String> substanceChars = new HashSet<>(Arrays.asList("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"));
|
|
||||||
|
|
||||||
public static String getComparisonString(String str) {
|
public static String getComparisonString(String str) {
|
||||||
StringBuilder ret = new StringBuilder();
|
StringBuilder ret = new StringBuilder();
|
||||||
|
|
||||||
|
@ -15,8 +15,6 @@ import java.util.Map;
|
|||||||
import java.util.concurrent.ConcurrentHashMap;
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
import static com.massivecraft.factions.zcore.util.TL.ROLE_NORMAL;
|
|
||||||
|
|
||||||
public class PermissionsMapTypeAdapter implements JsonDeserializer<Map<Permissable, Map<PermissableAction, Access>>> {
|
public class PermissionsMapTypeAdapter implements JsonDeserializer<Map<Permissable, Map<PermissableAction, Access>>> {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -59,6 +59,10 @@ public abstract class SpiralTask implements Runnable {
|
|||||||
this.setTaskID(Bukkit.getServer().getScheduler().scheduleSyncRepeatingTask(P.p, this, 2, 2));
|
this.setTaskID(Bukkit.getServer().getScheduler().scheduleSyncRepeatingTask(P.p, this, 2, 2));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static long now() {
|
||||||
|
return System.currentTimeMillis();
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This is where the necessary work is done; you'll need to override this method with whatever you want
|
* This is where the necessary work is done; you'll need to override this method with whatever you want
|
||||||
* done at each chunk in the spiral pattern.
|
* done at each chunk in the spiral pattern.
|
||||||
@ -88,16 +92,16 @@ public abstract class SpiralTask implements Runnable {
|
|||||||
return x;
|
return x;
|
||||||
}
|
}
|
||||||
|
|
||||||
public final int getZ() {
|
|
||||||
return z;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Below are the guts of the class, which you normally wouldn't need to mess with.
|
* Below are the guts of the class, which you normally wouldn't need to mess with.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
public final int getZ() {
|
||||||
|
return z;
|
||||||
|
}
|
||||||
|
|
||||||
public final void setTaskID(int ID) {
|
public final void setTaskID(int ID) {
|
||||||
if (ID == -1) {
|
if (ID == -1) {
|
||||||
this.stop();
|
this.stop();
|
||||||
@ -202,8 +206,4 @@ public abstract class SpiralTask implements Runnable {
|
|||||||
public final boolean valid() {
|
public final boolean valid() {
|
||||||
return taskID != -1;
|
return taskID != -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static long now() {
|
|
||||||
return System.currentTimeMillis();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -24,18 +24,14 @@ import java.util.logging.Level;
|
|||||||
|
|
||||||
public class WarpGUI implements InventoryHolder, FactionGUI {
|
public class WarpGUI implements InventoryHolder, FactionGUI {
|
||||||
|
|
||||||
|
private final ConfigurationSection section;
|
||||||
|
int guiSize;
|
||||||
private Inventory warpGUI;
|
private Inventory warpGUI;
|
||||||
private FPlayer fme;
|
private FPlayer fme;
|
||||||
|
|
||||||
int guiSize;
|
|
||||||
|
|
||||||
private HashMap<Integer, String> warpSlots = new HashMap<>();
|
private HashMap<Integer, String> warpSlots = new HashMap<>();
|
||||||
private int maxWarps;
|
private int maxWarps;
|
||||||
|
|
||||||
private List<Integer> dummySlots = new ArrayList<>();
|
private List<Integer> dummySlots = new ArrayList<>();
|
||||||
|
|
||||||
private final ConfigurationSection section;
|
|
||||||
|
|
||||||
public WarpGUI(FPlayer fme) {
|
public WarpGUI(FPlayer fme) {
|
||||||
this.fme = fme;
|
this.fme = fme;
|
||||||
this.section = P.p.getConfig().getConfigurationSection("fwarp-gui");
|
this.section = P.p.getConfig().getConfigurationSection("fwarp-gui");
|
||||||
|
@ -26,55 +26,28 @@ public abstract class MCommand<T extends MPlugin> {
|
|||||||
|
|
||||||
// The sub-commands to this command
|
// The sub-commands to this command
|
||||||
public List<MCommand<?>> subCommands;
|
public List<MCommand<?>> subCommands;
|
||||||
|
|
||||||
public void addSubCommand(MCommand<?> subCommand) {
|
|
||||||
subCommand.commandChain.addAll(this.commandChain);
|
|
||||||
subCommand.commandChain.add(this);
|
|
||||||
this.subCommands.add(subCommand);
|
|
||||||
}
|
|
||||||
|
|
||||||
// The different names this commands will react to
|
// The different names this commands will react to
|
||||||
public List<String> aliases;
|
public List<String> aliases;
|
||||||
public boolean allowNoSlashAccess;
|
public boolean allowNoSlashAccess;
|
||||||
|
|
||||||
// Information on the args
|
// Information on the args
|
||||||
public List<String> requiredArgs;
|
public List<String> requiredArgs;
|
||||||
public LinkedHashMap<String, String> optionalArgs;
|
public LinkedHashMap<String, String> optionalArgs;
|
||||||
public boolean errorOnToManyArgs = true;
|
public boolean errorOnToManyArgs = true;
|
||||||
|
|
||||||
// FIELD: Help Short
|
|
||||||
// This field may be left blank and will in such case be loaded from the permissions node instead.
|
|
||||||
// Thus make sure the permissions node description is an action description like "eat hamburgers" or "do admin stuff".
|
|
||||||
private String helpShort;
|
|
||||||
|
|
||||||
public void setHelpShort(String val) {
|
|
||||||
this.helpShort = val;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getHelpShort() {
|
|
||||||
if (this.helpShort == null) {
|
|
||||||
return getUsageTranslation().toString();
|
|
||||||
}
|
|
||||||
|
|
||||||
return this.helpShort;
|
|
||||||
}
|
|
||||||
|
|
||||||
public abstract TL getUsageTranslation();
|
|
||||||
|
|
||||||
public List<String> helpLong;
|
public List<String> helpLong;
|
||||||
public CommandVisibility visibility;
|
public CommandVisibility visibility;
|
||||||
|
|
||||||
// Some information on permissions
|
// Some information on permissions
|
||||||
public boolean senderMustBePlayer;
|
public boolean senderMustBePlayer;
|
||||||
public String permission;
|
public String permission;
|
||||||
|
|
||||||
// Information available on execution of the command
|
// Information available on execution of the command
|
||||||
public CommandSender sender; // Will always be set
|
public CommandSender sender; // Will always be set
|
||||||
public Player me; // Will only be set when the sender is a player
|
public Player me; // Will only be set when the sender is a player
|
||||||
public boolean senderIsConsole;
|
public boolean senderIsConsole;
|
||||||
public List<String> args; // Will contain the arguments, or and empty list if there are none.
|
public List<String> args; // Will contain the arguments, or and empty list if there are none.
|
||||||
public List<MCommand<?>> commandChain = new ArrayList<>(); // The command chain used to execute this command
|
public List<MCommand<?>> commandChain = new ArrayList<>(); // The command chain used to execute this command
|
||||||
|
// FIELD: Help Short
|
||||||
|
// This field may be left blank and will in such case be loaded from the permissions node instead.
|
||||||
|
// Thus make sure the permissions node description is an action description like "eat hamburgers" or "do admin stuff".
|
||||||
|
private String helpShort;
|
||||||
public MCommand(T p) {
|
public MCommand(T p) {
|
||||||
this.p = p;
|
this.p = p;
|
||||||
|
|
||||||
@ -93,6 +66,26 @@ public abstract class MCommand<T extends MPlugin> {
|
|||||||
this.visibility = CommandVisibility.VISIBLE;
|
this.visibility = CommandVisibility.VISIBLE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void addSubCommand(MCommand<?> subCommand) {
|
||||||
|
subCommand.commandChain.addAll(this.commandChain);
|
||||||
|
subCommand.commandChain.add(this);
|
||||||
|
this.subCommands.add(subCommand);
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getHelpShort() {
|
||||||
|
if (this.helpShort == null) {
|
||||||
|
return getUsageTranslation().toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
return this.helpShort;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setHelpShort(String val) {
|
||||||
|
this.helpShort = val;
|
||||||
|
}
|
||||||
|
|
||||||
|
public abstract TL getUsageTranslation();
|
||||||
|
|
||||||
// The commandChain is a list of the parent command chain used to get to this command.
|
// The commandChain is a list of the parent command chain used to get to this command.
|
||||||
public void execute(CommandSender sender, List<String> args, List<MCommand<?>> commandChain) {
|
public void execute(CommandSender sender, List<String> args, List<MCommand<?>> commandChain) {
|
||||||
// Set the execution-time specific variables
|
// Set the execution-time specific variables
|
||||||
|
@ -27,16 +27,32 @@ import java.util.logging.Level;
|
|||||||
|
|
||||||
public abstract class MPlugin extends JavaPlugin {
|
public abstract class MPlugin extends JavaPlugin {
|
||||||
|
|
||||||
|
// Persist related
|
||||||
|
public final Gson gson = this.getGsonBuilder().create();
|
||||||
// Some utils
|
// Some utils
|
||||||
public Persist persist;
|
public Persist persist;
|
||||||
public TextUtil txt;
|
public TextUtil txt;
|
||||||
public PermUtil perm;
|
public PermUtil perm;
|
||||||
|
public String refCommand = "";
|
||||||
// Persist related
|
//holds f stuck taskids
|
||||||
public final Gson gson = this.getGsonBuilder().create();
|
public Map<UUID, Integer> stuckMap = new HashMap<>();
|
||||||
|
// These are not supposed to be used directly.
|
||||||
|
// They are loaded and used through the TextUtil instance for the plugin.
|
||||||
|
public Map<String, String> rawTags = new LinkedHashMap<>();
|
||||||
|
protected boolean loadSuccessful = false;
|
||||||
private Integer saveTask = null;
|
private Integer saveTask = null;
|
||||||
private boolean autoSave = true;
|
private boolean autoSave = true;
|
||||||
protected boolean loadSuccessful = false;
|
// Listeners
|
||||||
|
private MPluginSecretPlayerListener mPluginSecretPlayerListener;
|
||||||
|
|
||||||
|
// Our stored base commands
|
||||||
|
private List<MCommand<?>> baseCommands = new ArrayList<>();
|
||||||
|
// holds f stuck start times
|
||||||
|
private Map<UUID, Long> timers = new HashMap<>();
|
||||||
|
// -------------------------------------------- //
|
||||||
|
// ENABLE
|
||||||
|
// -------------------------------------------- //
|
||||||
|
private long timeEnableStart;
|
||||||
|
|
||||||
public boolean getAutoSave() {
|
public boolean getAutoSave() {
|
||||||
return this.autoSave;
|
return this.autoSave;
|
||||||
@ -46,29 +62,10 @@ public abstract class MPlugin extends JavaPlugin {
|
|||||||
this.autoSave = val;
|
this.autoSave = val;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String refCommand = "";
|
|
||||||
|
|
||||||
// Listeners
|
|
||||||
private MPluginSecretPlayerListener mPluginSecretPlayerListener;
|
|
||||||
|
|
||||||
// Our stored base commands
|
|
||||||
private List<MCommand<?>> baseCommands = new ArrayList<>();
|
|
||||||
|
|
||||||
public List<MCommand<?>> getBaseCommands() {
|
public List<MCommand<?>> getBaseCommands() {
|
||||||
return this.baseCommands;
|
return this.baseCommands;
|
||||||
}
|
}
|
||||||
|
|
||||||
// holds f stuck start times
|
|
||||||
private Map<UUID, Long> timers = new HashMap<>();
|
|
||||||
|
|
||||||
//holds f stuck taskids
|
|
||||||
public Map<UUID, Integer> stuckMap = new HashMap<>();
|
|
||||||
|
|
||||||
// -------------------------------------------- //
|
|
||||||
// ENABLE
|
|
||||||
// -------------------------------------------- //
|
|
||||||
private long timeEnableStart;
|
|
||||||
|
|
||||||
public boolean preEnable() {
|
public boolean preEnable() {
|
||||||
log("=== ENABLE START ===");
|
log("=== ENABLE START ===");
|
||||||
timeEnableStart = System.currentTimeMillis();
|
timeEnableStart = System.currentTimeMillis();
|
||||||
@ -193,28 +190,24 @@ public abstract class MPlugin extends JavaPlugin {
|
|||||||
log("Disabled");
|
log("Disabled");
|
||||||
}
|
}
|
||||||
|
|
||||||
public void suicide() {
|
|
||||||
log("Now I suicide!");
|
|
||||||
this.getServer().getPluginManager().disablePlugin(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
// Some inits...
|
// Some inits...
|
||||||
// You are supposed to override these in the plugin if you aren't satisfied with the defaults
|
// You are supposed to override these in the plugin if you aren't satisfied with the defaults
|
||||||
// The goal is that you always will be satisfied though.
|
// The goal is that you always will be satisfied though.
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
|
|
||||||
public GsonBuilder getGsonBuilder() {
|
public void suicide() {
|
||||||
return new GsonBuilder().setPrettyPrinting().disableHtmlEscaping().serializeNulls().excludeFieldsWithModifiers(Modifier.TRANSIENT, Modifier.VOLATILE);
|
log("Now I suicide!");
|
||||||
|
this.getServer().getPluginManager().disablePlugin(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
// LANG AND TAGS
|
// LANG AND TAGS
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
|
|
||||||
// These are not supposed to be used directly.
|
public GsonBuilder getGsonBuilder() {
|
||||||
// They are loaded and used through the TextUtil instance for the plugin.
|
return new GsonBuilder().setPrettyPrinting().disableHtmlEscaping().serializeNulls().excludeFieldsWithModifiers(Modifier.TRANSIENT, Modifier.VOLATILE);
|
||||||
public Map<String, String> rawTags = new LinkedHashMap<>();
|
}
|
||||||
|
|
||||||
public void addRawTags() {
|
public void addRawTags() {
|
||||||
this.rawTags.put("l", "<green>"); // logo
|
this.rawTags.put("l", "<green>"); // logo
|
||||||
|
@ -39,7 +39,8 @@ public enum PermissableAction {
|
|||||||
TNTFILL("tntfill"),
|
TNTFILL("tntfill"),
|
||||||
WITHDRAW("withdraw"),
|
WITHDRAW("withdraw"),
|
||||||
CHEST("chest"),
|
CHEST("chest"),
|
||||||
SPAWNER("spawner");
|
SPAWNER("spawner"),
|
||||||
|
CLAIM("claim");
|
||||||
|
|
||||||
private String name;
|
private String name;
|
||||||
|
|
||||||
@ -47,15 +48,6 @@ public enum PermissableAction {
|
|||||||
this.name = name;
|
this.name = name;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Get the friendly name of this action. Used for editing in commands.
|
|
||||||
*
|
|
||||||
* @return friendly name of the action as a String.
|
|
||||||
*/
|
|
||||||
public String getName() {
|
|
||||||
return this.name;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Case insensitive check for action.
|
* Case insensitive check for action.
|
||||||
*
|
*
|
||||||
@ -72,6 +64,15 @@ public enum PermissableAction {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the friendly name of this action. Used for editing in commands.
|
||||||
|
*
|
||||||
|
* @return friendly name of the action as a String.
|
||||||
|
*/
|
||||||
|
public String getName() {
|
||||||
|
return this.name;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return name;
|
return name;
|
||||||
|
@ -24,19 +24,15 @@ import java.util.logging.Level;
|
|||||||
|
|
||||||
public class PermissableActionGUI implements InventoryHolder, FactionGUI {
|
public class PermissableActionGUI implements InventoryHolder, FactionGUI {
|
||||||
|
|
||||||
|
private final ConfigurationSection section;
|
||||||
private Inventory actionGUI;
|
private Inventory actionGUI;
|
||||||
private FPlayer fme;
|
private FPlayer fme;
|
||||||
|
|
||||||
private int guiSize;
|
private int guiSize;
|
||||||
|
|
||||||
private Permissable permissable;
|
private Permissable permissable;
|
||||||
|
|
||||||
private HashMap<Integer, PermissableAction> actionSlots = new HashMap<>();
|
private HashMap<Integer, PermissableAction> actionSlots = new HashMap<>();
|
||||||
private HashMap<Integer, SpecialItem> specialSlots = new HashMap<>();
|
private HashMap<Integer, SpecialItem> specialSlots = new HashMap<>();
|
||||||
private ArrayList<Integer> usedDummySlots = new ArrayList<>();
|
private ArrayList<Integer> usedDummySlots = new ArrayList<>();
|
||||||
|
|
||||||
private final ConfigurationSection section;
|
|
||||||
|
|
||||||
public PermissableActionGUI(FPlayer fme, Permissable permissable) {
|
public PermissableActionGUI(FPlayer fme, Permissable permissable) {
|
||||||
this.fme = fme;
|
this.fme = fme;
|
||||||
this.permissable = permissable;
|
this.permissable = permissable;
|
||||||
|
@ -26,15 +26,12 @@ import java.util.logging.Level;
|
|||||||
|
|
||||||
public class PermissableRelationGUI implements InventoryHolder, FactionGUI {
|
public class PermissableRelationGUI implements InventoryHolder, FactionGUI {
|
||||||
|
|
||||||
|
private final ConfigurationSection section;
|
||||||
private Inventory relationGUI;
|
private Inventory relationGUI;
|
||||||
private FPlayer fme;
|
private FPlayer fme;
|
||||||
|
|
||||||
private int guiSize;
|
private int guiSize;
|
||||||
|
|
||||||
private HashMap<Integer, Permissable> relationSlots = new HashMap<>();
|
private HashMap<Integer, Permissable> relationSlots = new HashMap<>();
|
||||||
|
|
||||||
private final ConfigurationSection section;
|
|
||||||
|
|
||||||
|
|
||||||
public PermissableRelationGUI(FPlayer fme) {
|
public PermissableRelationGUI(FPlayer fme) {
|
||||||
this.fme = fme;
|
this.fme = fme;
|
||||||
|
@ -209,7 +209,6 @@ public class FUpgradesGUI implements Listener {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void closeChests(Faction faction) {
|
private void closeChests(Faction faction) {
|
||||||
@ -237,7 +236,9 @@ public class FUpgradesGUI implements Listener {
|
|||||||
ItemStack expItem = P.p.createItem(expMaterial, expAmt, expData, expName, expLore);
|
ItemStack expItem = P.p.createItem(expMaterial, expAmt, expData, expName, expLore);
|
||||||
if (expLevel >= 1) {
|
if (expLevel >= 1) {
|
||||||
ItemMeta itemMeta = expItem.getItemMeta();
|
ItemMeta itemMeta = expItem.getItemMeta();
|
||||||
if (!P.p.mc17) { itemMeta.addItemFlags(ItemFlag.HIDE_ENCHANTS); }
|
if (!P.p.mc17) {
|
||||||
|
itemMeta.addItemFlags(ItemFlag.HIDE_ENCHANTS);
|
||||||
|
}
|
||||||
itemMeta.addEnchant(Enchantment.DURABILITY, 3, true);
|
itemMeta.addEnchant(Enchantment.DURABILITY, 3, true);
|
||||||
expItem.setItemMeta(itemMeta);
|
expItem.setItemMeta(itemMeta);
|
||||||
}
|
}
|
||||||
@ -275,7 +276,9 @@ public class FUpgradesGUI implements Listener {
|
|||||||
cropItem.getItemMeta().setLore(cropLore);
|
cropItem.getItemMeta().setLore(cropLore);
|
||||||
if (cropLevel >= 1) {
|
if (cropLevel >= 1) {
|
||||||
ItemMeta itemMeta = cropItem.getItemMeta();
|
ItemMeta itemMeta = cropItem.getItemMeta();
|
||||||
if (!P.p.mc17) { itemMeta.addItemFlags(ItemFlag.HIDE_ENCHANTS); }
|
if (!P.p.mc17) {
|
||||||
|
itemMeta.addItemFlags(ItemFlag.HIDE_ENCHANTS);
|
||||||
|
}
|
||||||
itemMeta.addEnchant(Enchantment.DURABILITY, 3, true);
|
itemMeta.addEnchant(Enchantment.DURABILITY, 3, true);
|
||||||
cropItem.setItemMeta(itemMeta);
|
cropItem.setItemMeta(itemMeta);
|
||||||
}
|
}
|
||||||
@ -288,7 +291,9 @@ public class FUpgradesGUI implements Listener {
|
|||||||
spawnerItem.getItemMeta().setLore(spawnerLore);
|
spawnerItem.getItemMeta().setLore(spawnerLore);
|
||||||
if (spawnerLevel >= 1) {
|
if (spawnerLevel >= 1) {
|
||||||
ItemMeta itemMeta = spawnerItem.getItemMeta();
|
ItemMeta itemMeta = spawnerItem.getItemMeta();
|
||||||
if (!P.p.mc17) { itemMeta.addItemFlags(ItemFlag.HIDE_ENCHANTS); }
|
if (!P.p.mc17) {
|
||||||
|
itemMeta.addItemFlags(ItemFlag.HIDE_ENCHANTS);
|
||||||
|
}
|
||||||
itemMeta.addEnchant(Enchantment.DURABILITY, 3, true);
|
itemMeta.addEnchant(Enchantment.DURABILITY, 3, true);
|
||||||
spawnerItem.setItemMeta(itemMeta);
|
spawnerItem.setItemMeta(itemMeta);
|
||||||
}
|
}
|
||||||
@ -314,7 +319,9 @@ public class FUpgradesGUI implements Listener {
|
|||||||
|
|
||||||
if (chestlevel >= 1) {
|
if (chestlevel >= 1) {
|
||||||
ItemMeta itemMeta = chestItem.getItemMeta();
|
ItemMeta itemMeta = chestItem.getItemMeta();
|
||||||
if (!P.p.mc17) { itemMeta.addItemFlags(ItemFlag.HIDE_ENCHANTS); }
|
if (!P.p.mc17) {
|
||||||
|
itemMeta.addItemFlags(ItemFlag.HIDE_ENCHANTS);
|
||||||
|
}
|
||||||
itemMeta.addEnchant(Enchantment.DURABILITY, 3, true);
|
itemMeta.addEnchant(Enchantment.DURABILITY, 3, true);
|
||||||
chestItem.setItemMeta(itemMeta);
|
chestItem.setItemMeta(itemMeta);
|
||||||
}
|
}
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
package com.massivecraft.factions.zcore.nbtapi;
|
package com.massivecraft.factions.zcore.nbtapi;
|
||||||
|
|
||||||
import java.util.Set;
|
|
||||||
|
|
||||||
import com.massivecraft.factions.zcore.nbtapi.utils.MinecraftVersion;
|
import com.massivecraft.factions.zcore.nbtapi.utils.MinecraftVersion;
|
||||||
|
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
|
||||||
public class NBTCompound {
|
public class NBTCompound {
|
||||||
|
|
||||||
|
@ -11,6 +11,14 @@ public class NBTItem extends NBTCompound {
|
|||||||
bukkitItem = item.clone();
|
bukkitItem = item.clone();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static NBTContainer convertItemtoNBT(ItemStack item) {
|
||||||
|
return NBTReflectionUtil.convertNMSItemtoNBTCompound(NBTReflectionUtil.getNMSItemStack(item));
|
||||||
|
}
|
||||||
|
|
||||||
|
public static ItemStack convertNBTtoItem(NBTCompound comp) {
|
||||||
|
return NBTReflectionUtil.getBukkitItemStack(NBTReflectionUtil.convertNBTCompoundtoNMSItem(comp));
|
||||||
|
}
|
||||||
|
|
||||||
protected Object getCompound() {
|
protected Object getCompound() {
|
||||||
return NBTReflectionUtil.getItemRootNBTTagCompound(NBTReflectionUtil.getNMSItemStack(bukkitItem));
|
return NBTReflectionUtil.getItemRootNBTTagCompound(NBTReflectionUtil.getNMSItemStack(bukkitItem));
|
||||||
}
|
}
|
||||||
@ -27,12 +35,4 @@ public class NBTItem extends NBTCompound {
|
|||||||
bukkitItem = item;
|
bukkitItem = item;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static NBTContainer convertItemtoNBT(ItemStack item){
|
|
||||||
return NBTReflectionUtil.convertNMSItemtoNBTCompound(NBTReflectionUtil.getNMSItemStack(item));
|
|
||||||
}
|
|
||||||
|
|
||||||
public static ItemStack convertNBTtoItem(NBTCompound comp){
|
|
||||||
return NBTReflectionUtil.getBukkitItemStack(NBTReflectionUtil.convertNBTCompoundtoNMSItem(comp));
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,13 @@
|
|||||||
package com.massivecraft.factions.zcore.nbtapi;
|
package com.massivecraft.factions.zcore.nbtapi;
|
||||||
|
|
||||||
|
import com.massivecraft.factions.zcore.nbtapi.utils.GsonWrapper;
|
||||||
|
import com.massivecraft.factions.zcore.nbtapi.utils.MethodNames;
|
||||||
|
import com.massivecraft.factions.zcore.nbtapi.utils.MinecraftVersion;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.block.BlockState;
|
||||||
|
import org.bukkit.entity.Entity;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
import java.io.FileInputStream;
|
import java.io.FileInputStream;
|
||||||
import java.io.FileOutputStream;
|
import java.io.FileOutputStream;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
@ -8,15 +16,6 @@ import java.lang.reflect.Method;
|
|||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.Stack;
|
import java.util.Stack;
|
||||||
|
|
||||||
import org.bukkit.Bukkit;
|
|
||||||
import org.bukkit.block.BlockState;
|
|
||||||
import org.bukkit.entity.Entity;
|
|
||||||
import org.bukkit.inventory.ItemStack;
|
|
||||||
|
|
||||||
import com.massivecraft.factions.zcore.nbtapi.utils.GsonWrapper;
|
|
||||||
import com.massivecraft.factions.zcore.nbtapi.utils.MethodNames;
|
|
||||||
import com.massivecraft.factions.zcore.nbtapi.utils.MinecraftVersion;
|
|
||||||
|
|
||||||
// TODO: finish codestyle cleanup -sgdc3
|
// TODO: finish codestyle cleanup -sgdc3
|
||||||
public class NBTReflectionUtil {
|
public class NBTReflectionUtil {
|
||||||
|
|
||||||
|
@ -14,14 +14,10 @@ public enum NBTType {
|
|||||||
NBTTagList(9),
|
NBTTagList(9),
|
||||||
NBTTagCompound(10);
|
NBTTagCompound(10);
|
||||||
|
|
||||||
NBTType(int i) {
|
|
||||||
id = i;
|
|
||||||
}
|
|
||||||
|
|
||||||
private final int id;
|
private final int id;
|
||||||
|
|
||||||
public int getId() {
|
NBTType(int i) {
|
||||||
return id;
|
id = i;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static NBTType valueOf(int id) {
|
public static NBTType valueOf(int id) {
|
||||||
@ -31,4 +27,8 @@ public enum NBTType {
|
|||||||
return NBTType.NBTTagEnd;
|
return NBTType.NBTTagEnd;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int getId() {
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -21,10 +21,6 @@ public enum MinecraftVersion {
|
|||||||
this.versionId = versionId;
|
this.versionId = versionId;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getVersionId() {
|
|
||||||
return versionId;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static MinecraftVersion getVersion() {
|
public static MinecraftVersion getVersion() {
|
||||||
if (version != null) {
|
if (version != null) {
|
||||||
return version;
|
return version;
|
||||||
@ -57,4 +53,8 @@ public enum MinecraftVersion {
|
|||||||
return hasGsonSupport;
|
return hasGsonSupport;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int getVersionId() {
|
||||||
|
return versionId;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -20,51 +20,6 @@ import java.util.Map.Entry;
|
|||||||
|
|
||||||
public abstract class MemoryBoard extends Board {
|
public abstract class MemoryBoard extends Board {
|
||||||
|
|
||||||
public class MemoryBoardMap extends HashMap<FLocation, String> {
|
|
||||||
private static final long serialVersionUID = -6689617828610585368L;
|
|
||||||
|
|
||||||
Multimap<String, FLocation> factionToLandMap = HashMultimap.create();
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String put(FLocation floc, String factionId) {
|
|
||||||
String previousValue = super.put(floc, factionId);
|
|
||||||
if (previousValue != null) {
|
|
||||||
factionToLandMap.remove(previousValue, floc);
|
|
||||||
}
|
|
||||||
|
|
||||||
factionToLandMap.put(factionId, floc);
|
|
||||||
return previousValue;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String remove(Object key) {
|
|
||||||
String result = super.remove(key);
|
|
||||||
if (result != null) {
|
|
||||||
FLocation floc = (FLocation) key;
|
|
||||||
factionToLandMap.remove(result, floc);
|
|
||||||
}
|
|
||||||
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void clear() {
|
|
||||||
super.clear();
|
|
||||||
factionToLandMap.clear();
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getOwnedLandCount(String factionId) {
|
|
||||||
return factionToLandMap.get(factionId).size();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void removeFaction(String factionId) {
|
|
||||||
Collection<FLocation> flocations = factionToLandMap.removeAll(factionId);
|
|
||||||
for (FLocation floc : flocations) {
|
|
||||||
super.remove(floc);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public MemoryBoardMap flocationIds = new MemoryBoardMap();
|
public MemoryBoardMap flocationIds = new MemoryBoardMap();
|
||||||
|
|
||||||
//----------------------------------------------//
|
//----------------------------------------------//
|
||||||
@ -198,11 +153,6 @@ public abstract class MemoryBoard extends Board {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//----------------------------------------------//
|
|
||||||
// Cleaner. Remove orphaned foreign keys
|
|
||||||
//----------------------------------------------//
|
|
||||||
|
|
||||||
public void clean() {
|
public void clean() {
|
||||||
Iterator<Entry<FLocation, String>> iter = flocationIds.entrySet().iterator();
|
Iterator<Entry<FLocation, String>> iter = flocationIds.entrySet().iterator();
|
||||||
while (iter.hasNext()) {
|
while (iter.hasNext()) {
|
||||||
@ -214,14 +164,19 @@ public abstract class MemoryBoard extends Board {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//----------------------------------------------//
|
//----------------------------------------------//
|
||||||
// Coord count
|
// Cleaner. Remove orphaned foreign keys
|
||||||
//----------------------------------------------//
|
//----------------------------------------------//
|
||||||
|
|
||||||
public int getFactionCoordCount(String factionId) {
|
public int getFactionCoordCount(String factionId) {
|
||||||
return flocationIds.getOwnedLandCount(factionId);
|
return flocationIds.getOwnedLandCount(factionId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------//
|
||||||
|
// Coord count
|
||||||
|
//----------------------------------------------//
|
||||||
|
|
||||||
public int getFactionCoordCount(Faction faction) {
|
public int getFactionCoordCount(Faction faction) {
|
||||||
return getFactionCoordCount(faction.getId());
|
return getFactionCoordCount(faction.getId());
|
||||||
}
|
}
|
||||||
@ -237,10 +192,6 @@ public abstract class MemoryBoard extends Board {
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------//
|
|
||||||
// Map generation
|
|
||||||
//----------------------------------------------//
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The map is relative to a coord and a faction north is in the direction of decreasing x east is in the direction
|
* The map is relative to a coord and a faction north is in the direction of decreasing x east is in the direction
|
||||||
* of decreasing z
|
* of decreasing z
|
||||||
@ -329,6 +280,10 @@ public abstract class MemoryBoard extends Board {
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------//
|
||||||
|
// Map generation
|
||||||
|
//----------------------------------------------//
|
||||||
|
|
||||||
private List<String> oneLineToolTip(Faction faction, FPlayer to) {
|
private List<String> oneLineToolTip(Faction faction, FPlayer to) {
|
||||||
return Arrays.asList(faction.describeTo(to));
|
return Arrays.asList(faction.describeTo(to));
|
||||||
}
|
}
|
||||||
@ -386,4 +341,49 @@ public abstract class MemoryBoard extends Board {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public abstract void convertFrom(MemoryBoard old);
|
public abstract void convertFrom(MemoryBoard old);
|
||||||
|
|
||||||
|
public class MemoryBoardMap extends HashMap<FLocation, String> {
|
||||||
|
private static final long serialVersionUID = -6689617828610585368L;
|
||||||
|
|
||||||
|
Multimap<String, FLocation> factionToLandMap = HashMultimap.create();
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String put(FLocation floc, String factionId) {
|
||||||
|
String previousValue = super.put(floc, factionId);
|
||||||
|
if (previousValue != null) {
|
||||||
|
factionToLandMap.remove(previousValue, floc);
|
||||||
|
}
|
||||||
|
|
||||||
|
factionToLandMap.put(factionId, floc);
|
||||||
|
return previousValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String remove(Object key) {
|
||||||
|
String result = super.remove(key);
|
||||||
|
if (result != null) {
|
||||||
|
FLocation floc = (FLocation) key;
|
||||||
|
factionToLandMap.remove(result, floc);
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void clear() {
|
||||||
|
super.clear();
|
||||||
|
factionToLandMap.clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getOwnedLandCount(String factionId) {
|
||||||
|
return factionToLandMap.get(factionId).size();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void removeFaction(String factionId) {
|
||||||
|
Collection<FLocation> flocations = factionToLandMap.removeAll(factionId);
|
||||||
|
for (FLocation floc : flocations) {
|
||||||
|
super.remove(floc);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -47,6 +47,7 @@ import java.util.UUID;
|
|||||||
|
|
||||||
public abstract class MemoryFPlayer implements FPlayer {
|
public abstract class MemoryFPlayer implements FPlayer {
|
||||||
|
|
||||||
|
public boolean inVault = false;
|
||||||
protected String factionId;
|
protected String factionId;
|
||||||
protected Role role;
|
protected Role role;
|
||||||
protected String title;
|
protected String title;
|
||||||
@ -70,7 +71,6 @@ public abstract class MemoryFPlayer implements FPlayer {
|
|||||||
protected boolean isFlying = false;
|
protected boolean isFlying = false;
|
||||||
protected boolean enteringPassword = false;
|
protected boolean enteringPassword = false;
|
||||||
protected String enteringPasswordWarp = "";
|
protected String enteringPasswordWarp = "";
|
||||||
|
|
||||||
protected transient FLocation lastStoodAt = new FLocation(); // Where did this player stand the last time we checked?
|
protected transient FLocation lastStoodAt = new FLocation(); // Where did this player stand the last time we checked?
|
||||||
protected transient boolean mapAutoUpdating;
|
protected transient boolean mapAutoUpdating;
|
||||||
protected transient Faction autoClaimFor;
|
protected transient Faction autoClaimFor;
|
||||||
@ -79,6 +79,56 @@ public abstract class MemoryFPlayer implements FPlayer {
|
|||||||
protected transient boolean loginPvpDisabled;
|
protected transient boolean loginPvpDisabled;
|
||||||
protected transient long lastFrostwalkerMessage;
|
protected transient long lastFrostwalkerMessage;
|
||||||
protected transient boolean shouldTakeFallDamage = true;
|
protected transient boolean shouldTakeFallDamage = true;
|
||||||
|
boolean playerAlerts = false;
|
||||||
|
boolean inspectMode = false;
|
||||||
|
|
||||||
|
public MemoryFPlayer() {
|
||||||
|
}
|
||||||
|
|
||||||
|
public MemoryFPlayer(String id) {
|
||||||
|
this.id = id;
|
||||||
|
this.resetFactionData(false);
|
||||||
|
this.power = Conf.powerPlayerStarting;
|
||||||
|
this.lastPowerUpdateTime = System.currentTimeMillis();
|
||||||
|
this.lastLoginTime = System.currentTimeMillis();
|
||||||
|
this.mapAutoUpdating = false;
|
||||||
|
this.autoClaimFor = null;
|
||||||
|
this.autoSafeZoneEnabled = false;
|
||||||
|
this.autoWarZoneEnabled = false;
|
||||||
|
this.loginPvpDisabled = Conf.noPVPDamageToOthersForXSecondsAfterLogin > 0;
|
||||||
|
this.powerBoost = 0.0;
|
||||||
|
this.showScoreboard = P.p.getConfig().getBoolean("scoreboard.default-enabled", false);
|
||||||
|
this.kills = 0;
|
||||||
|
this.deaths = 0;
|
||||||
|
this.mapHeight = Conf.mapHeight;
|
||||||
|
|
||||||
|
if (!Conf.newPlayerStartingFactionID.equals("0") && Factions.getInstance().isValidFactionId(Conf.newPlayerStartingFactionID)) {
|
||||||
|
this.factionId = Conf.newPlayerStartingFactionID;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public MemoryFPlayer(MemoryFPlayer other) {
|
||||||
|
this.factionId = other.factionId;
|
||||||
|
this.id = other.id;
|
||||||
|
this.power = other.power;
|
||||||
|
this.lastLoginTime = other.lastLoginTime;
|
||||||
|
this.mapAutoUpdating = other.mapAutoUpdating;
|
||||||
|
this.autoClaimFor = other.autoClaimFor;
|
||||||
|
this.autoSafeZoneEnabled = other.autoSafeZoneEnabled;
|
||||||
|
this.autoWarZoneEnabled = other.autoWarZoneEnabled;
|
||||||
|
this.loginPvpDisabled = other.loginPvpDisabled;
|
||||||
|
this.powerBoost = other.powerBoost;
|
||||||
|
this.role = other.role;
|
||||||
|
this.title = other.title;
|
||||||
|
this.chatMode = other.chatMode;
|
||||||
|
this.spyingChat = other.spyingChat;
|
||||||
|
this.lastStoodAt = other.lastStoodAt;
|
||||||
|
this.isAdminBypassing = other.isAdminBypassing;
|
||||||
|
this.showScoreboard = P.p.getConfig().getBoolean("scoreboard.default-enabled", true);
|
||||||
|
this.kills = other.kills;
|
||||||
|
this.deaths = other.deaths;
|
||||||
|
this.mapHeight = Conf.mapHeight;
|
||||||
|
}
|
||||||
|
|
||||||
public void login() {
|
public void login() {
|
||||||
this.kills = getPlayer().getStatistic(Statistic.PLAYER_KILLS);
|
this.kills = getPlayer().getStatistic(Statistic.PLAYER_KILLS);
|
||||||
@ -97,14 +147,6 @@ public abstract class MemoryFPlayer implements FPlayer {
|
|||||||
return Factions.getInstance().getFactionById(this.factionId);
|
return Factions.getInstance().getFactionById(this.factionId);
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getFactionId() {
|
|
||||||
return this.factionId;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean hasFaction() {
|
|
||||||
return !factionId.equals("0");
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setFaction(Faction faction) {
|
public void setFaction(Faction faction) {
|
||||||
Faction oldFaction = this.getFaction();
|
Faction oldFaction = this.getFaction();
|
||||||
if (oldFaction != null) {
|
if (oldFaction != null) {
|
||||||
@ -114,6 +156,14 @@ public abstract class MemoryFPlayer implements FPlayer {
|
|||||||
this.factionId = faction.getId();
|
this.factionId = faction.getId();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getFactionId() {
|
||||||
|
return this.factionId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean hasFaction() {
|
||||||
|
return !factionId.equals("0");
|
||||||
|
}
|
||||||
|
|
||||||
public void setMonitorJoins(boolean monitor) {
|
public void setMonitorJoins(boolean monitor) {
|
||||||
this.monitorJoins = monitor;
|
this.monitorJoins = monitor;
|
||||||
}
|
}
|
||||||
@ -209,10 +259,6 @@ public abstract class MemoryFPlayer implements FPlayer {
|
|||||||
this.isAdminBypassing = val;
|
this.isAdminBypassing = val;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setChatMode(ChatMode chatMode) {
|
|
||||||
this.chatMode = chatMode;
|
|
||||||
}
|
|
||||||
|
|
||||||
public ChatMode getChatMode() {
|
public ChatMode getChatMode() {
|
||||||
if (this.factionId.equals("0") || !Conf.factionOnlyChat) {
|
if (this.factionId.equals("0") || !Conf.factionOnlyChat) {
|
||||||
this.chatMode = ChatMode.PUBLIC;
|
this.chatMode = ChatMode.PUBLIC;
|
||||||
@ -220,75 +266,35 @@ public abstract class MemoryFPlayer implements FPlayer {
|
|||||||
return chatMode;
|
return chatMode;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setIgnoreAllianceChat(boolean ignore) {
|
public void setChatMode(ChatMode chatMode) {
|
||||||
this.ignoreAllianceChat = ignore;
|
this.chatMode = chatMode;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isIgnoreAllianceChat() {
|
public boolean isIgnoreAllianceChat() {
|
||||||
return ignoreAllianceChat;
|
return ignoreAllianceChat;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setSpyingChat(boolean chatSpying) {
|
public void setIgnoreAllianceChat(boolean ignore) {
|
||||||
this.spyingChat = chatSpying;
|
this.ignoreAllianceChat = ignore;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isSpyingChat() {
|
public boolean isSpyingChat() {
|
||||||
return spyingChat;
|
return spyingChat;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setSpyingChat(boolean chatSpying) {
|
||||||
|
this.spyingChat = chatSpying;
|
||||||
|
}
|
||||||
|
|
||||||
|
// -------------------------------------------- //
|
||||||
|
// Getters And Setters
|
||||||
|
// -------------------------------------------- //
|
||||||
|
|
||||||
// FIELD: account
|
// FIELD: account
|
||||||
public String getAccountId() {
|
public String getAccountId() {
|
||||||
return this.getId();
|
return this.getId();
|
||||||
}
|
}
|
||||||
|
|
||||||
public MemoryFPlayer() {
|
|
||||||
}
|
|
||||||
|
|
||||||
public MemoryFPlayer(String id) {
|
|
||||||
this.id = id;
|
|
||||||
this.resetFactionData(false);
|
|
||||||
this.power = Conf.powerPlayerStarting;
|
|
||||||
this.lastPowerUpdateTime = System.currentTimeMillis();
|
|
||||||
this.lastLoginTime = System.currentTimeMillis();
|
|
||||||
this.mapAutoUpdating = false;
|
|
||||||
this.autoClaimFor = null;
|
|
||||||
this.autoSafeZoneEnabled = false;
|
|
||||||
this.autoWarZoneEnabled = false;
|
|
||||||
this.loginPvpDisabled = Conf.noPVPDamageToOthersForXSecondsAfterLogin > 0;
|
|
||||||
this.powerBoost = 0.0;
|
|
||||||
this.showScoreboard = P.p.getConfig().getBoolean("scoreboard.default-enabled", false);
|
|
||||||
this.kills = 0;
|
|
||||||
this.deaths = 0;
|
|
||||||
this.mapHeight = Conf.mapHeight;
|
|
||||||
|
|
||||||
if (!Conf.newPlayerStartingFactionID.equals("0") && Factions.getInstance().isValidFactionId(Conf.newPlayerStartingFactionID)) {
|
|
||||||
this.factionId = Conf.newPlayerStartingFactionID;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public MemoryFPlayer(MemoryFPlayer other) {
|
|
||||||
this.factionId = other.factionId;
|
|
||||||
this.id = other.id;
|
|
||||||
this.power = other.power;
|
|
||||||
this.lastLoginTime = other.lastLoginTime;
|
|
||||||
this.mapAutoUpdating = other.mapAutoUpdating;
|
|
||||||
this.autoClaimFor = other.autoClaimFor;
|
|
||||||
this.autoSafeZoneEnabled = other.autoSafeZoneEnabled;
|
|
||||||
this.autoWarZoneEnabled = other.autoWarZoneEnabled;
|
|
||||||
this.loginPvpDisabled = other.loginPvpDisabled;
|
|
||||||
this.powerBoost = other.powerBoost;
|
|
||||||
this.role = other.role;
|
|
||||||
this.title = other.title;
|
|
||||||
this.chatMode = other.chatMode;
|
|
||||||
this.spyingChat = other.spyingChat;
|
|
||||||
this.lastStoodAt = other.lastStoodAt;
|
|
||||||
this.isAdminBypassing = other.isAdminBypassing;
|
|
||||||
this.showScoreboard = P.p.getConfig().getBoolean("scoreboard.default-enabled", true);
|
|
||||||
this.kills = other.kills;
|
|
||||||
this.deaths = other.deaths;
|
|
||||||
this.mapHeight = Conf.mapHeight;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void resetFactionData(boolean doSpoutUpdate) {
|
public void resetFactionData(boolean doSpoutUpdate) {
|
||||||
// clean up any territory ownership in old faction, if there is one
|
// clean up any territory ownership in old faction, if there is one
|
||||||
if (factionId != null && Factions.getInstance().isValidFactionId(this.getFactionId())) {
|
if (factionId != null && Factions.getInstance().isValidFactionId(this.getFactionId())) {
|
||||||
@ -310,11 +316,6 @@ public abstract class MemoryFPlayer implements FPlayer {
|
|||||||
this.resetFactionData(true);
|
this.resetFactionData(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
// -------------------------------------------- //
|
|
||||||
// Getters And Setters
|
|
||||||
// -------------------------------------------- //
|
|
||||||
|
|
||||||
|
|
||||||
public long getLastLoginTime() {
|
public long getLastLoginTime() {
|
||||||
return lastLoginTime;
|
return lastLoginTime;
|
||||||
}
|
}
|
||||||
@ -336,6 +337,12 @@ public abstract class MemoryFPlayer implements FPlayer {
|
|||||||
this.mapAutoUpdating = mapAutoUpdating;
|
this.mapAutoUpdating = mapAutoUpdating;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------//
|
||||||
|
// Title, Name, Faction Tag and Chat
|
||||||
|
//----------------------------------------------//
|
||||||
|
|
||||||
|
// Base:
|
||||||
|
|
||||||
public boolean hasLoginPvpDisabled() {
|
public boolean hasLoginPvpDisabled() {
|
||||||
if (!loginPvpDisabled) {
|
if (!loginPvpDisabled) {
|
||||||
return false;
|
return false;
|
||||||
@ -355,12 +362,6 @@ public abstract class MemoryFPlayer implements FPlayer {
|
|||||||
this.lastStoodAt = flocation;
|
this.lastStoodAt = flocation;
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------//
|
|
||||||
// Title, Name, Faction Tag and Chat
|
|
||||||
//----------------------------------------------//
|
|
||||||
|
|
||||||
// Base:
|
|
||||||
|
|
||||||
public String getTitle() {
|
public String getTitle() {
|
||||||
return this.hasFaction() ? title : TL.NOFACTION_PREFIX.toString();
|
return this.hasFaction() ? title : TL.NOFACTION_PREFIX.toString();
|
||||||
}
|
}
|
||||||
@ -374,6 +375,8 @@ public abstract class MemoryFPlayer implements FPlayer {
|
|||||||
this.title = title;
|
this.title = title;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Base concatenations:
|
||||||
|
|
||||||
public String getName() {
|
public String getName() {
|
||||||
if (this.name == null) {
|
if (this.name == null) {
|
||||||
// Older versions of FactionsUUID don't save the name,
|
// Older versions of FactionsUUID don't save the name,
|
||||||
@ -393,7 +396,8 @@ public abstract class MemoryFPlayer implements FPlayer {
|
|||||||
return this.hasFaction() ? this.getFaction().getTag() : "";
|
return this.hasFaction() ? this.getFaction().getTag() : "";
|
||||||
}
|
}
|
||||||
|
|
||||||
// Base concatenations:
|
// Colored concatenations:
|
||||||
|
// These are used in information messages
|
||||||
|
|
||||||
public String getNameAndSomething(String something) {
|
public String getNameAndSomething(String something) {
|
||||||
String ret = this.role.getPrefix();
|
String ret = this.role.getPrefix();
|
||||||
@ -408,13 +412,13 @@ public abstract class MemoryFPlayer implements FPlayer {
|
|||||||
return this.getNameAndSomething(this.getTitle());
|
return this.getNameAndSomething(this.getTitle());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Chat Tag:
|
||||||
|
// These are injected into the format of global chat messages.
|
||||||
|
|
||||||
public String getNameAndTag() {
|
public String getNameAndTag() {
|
||||||
return this.getNameAndSomething(this.getTag());
|
return this.getNameAndSomething(this.getTag());
|
||||||
}
|
}
|
||||||
|
|
||||||
// Colored concatenations:
|
|
||||||
// These are used in information messages
|
|
||||||
|
|
||||||
public String getNameAndTitle(Faction faction) {
|
public String getNameAndTitle(Faction faction) {
|
||||||
return this.getColorTo(faction) + this.getNameAndTitle();
|
return this.getColorTo(faction) + this.getNameAndTitle();
|
||||||
}
|
}
|
||||||
@ -423,9 +427,6 @@ public abstract class MemoryFPlayer implements FPlayer {
|
|||||||
return this.getColorTo(fplayer) + this.getNameAndTitle();
|
return this.getColorTo(fplayer) + this.getNameAndTitle();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Chat Tag:
|
|
||||||
// These are injected into the format of global chat messages.
|
|
||||||
|
|
||||||
public String getChatTag() {
|
public String getChatTag() {
|
||||||
return this.hasFaction() ? String.format(Conf.chatTagFormat, this.getRole().getPrefix() + this.getTag()) : TL.NOFACTION_PREFIX.toString();
|
return this.hasFaction() ? String.format(Conf.chatTagFormat, this.getRole().getPrefix() + this.getTag()) : TL.NOFACTION_PREFIX.toString();
|
||||||
}
|
}
|
||||||
@ -435,6 +436,10 @@ public abstract class MemoryFPlayer implements FPlayer {
|
|||||||
return this.hasFaction() ? this.getRelationTo(faction).getColor() + getChatTag() : "";
|
return this.hasFaction() ? this.getRelationTo(faction).getColor() + getChatTag() : "";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// -------------------------------
|
||||||
|
// Relation and relation colors
|
||||||
|
// -------------------------------
|
||||||
|
|
||||||
public String getChatTag(MemoryFPlayer fplayer) {
|
public String getChatTag(MemoryFPlayer fplayer) {
|
||||||
return this.hasFaction() ? this.getColorTo(fplayer) + getChatTag() : "";
|
return this.hasFaction() ? this.getColorTo(fplayer) + getChatTag() : "";
|
||||||
}
|
}
|
||||||
@ -448,10 +453,6 @@ public abstract class MemoryFPlayer implements FPlayer {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// -------------------------------
|
|
||||||
// Relation and relation colors
|
|
||||||
// -------------------------------
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String describeTo(RelationParticipator that, boolean ucfirst) {
|
public String describeTo(RelationParticipator that, boolean ucfirst) {
|
||||||
return RelationUtil.describeThatToMe(this, that, ucfirst);
|
return RelationUtil.describeThatToMe(this, that, ucfirst);
|
||||||
@ -492,7 +493,6 @@ public abstract class MemoryFPlayer implements FPlayer {
|
|||||||
player.setHealth(player.getHealth() + amnt);
|
player.setHealth(player.getHealth() + amnt);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//----------------------------------------------//
|
//----------------------------------------------//
|
||||||
// Power
|
// Power
|
||||||
//----------------------------------------------//
|
//----------------------------------------------//
|
||||||
@ -610,6 +610,10 @@ public abstract class MemoryFPlayer implements FPlayer {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// -------------------------------
|
||||||
|
// Actions
|
||||||
|
// -------------------------------
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check if the scoreboard should be shown. Simple method to be used by above method.
|
* Check if the scoreboard should be shown. Simple method to be used by above method.
|
||||||
*
|
*
|
||||||
@ -630,10 +634,6 @@ public abstract class MemoryFPlayer implements FPlayer {
|
|||||||
this.showScoreboard = show;
|
this.showScoreboard = show;
|
||||||
}
|
}
|
||||||
|
|
||||||
// -------------------------------
|
|
||||||
// Actions
|
|
||||||
// -------------------------------
|
|
||||||
|
|
||||||
public void leave(boolean makePay) {
|
public void leave(boolean makePay) {
|
||||||
Faction myFaction = this.getFaction();
|
Faction myFaction = this.getFaction();
|
||||||
makePay = makePay && Econ.shouldBeUsed() && !this.isAdminBypassing();
|
makePay = makePay && Econ.shouldBeUsed() && !this.isAdminBypassing();
|
||||||
@ -726,8 +726,7 @@ public abstract class MemoryFPlayer implements FPlayer {
|
|||||||
error = P.p.txt.parse(TL.CLAIM_PROTECTED.toString());
|
error = P.p.txt.parse(TL.CLAIM_PROTECTED.toString());
|
||||||
} else if (flocation.isOutsideWorldBorder(P.p.getConfig().getInt("world-border.buffer", 0))) {
|
} else if (flocation.isOutsideWorldBorder(P.p.getConfig().getInt("world-border.buffer", 0))) {
|
||||||
error = P.p.txt.parse(TL.CLAIM_OUTSIDEWORLDBORDER.toString());
|
error = P.p.txt.parse(TL.CLAIM_OUTSIDEWORLDBORDER.toString());
|
||||||
}
|
} else if (Conf.worldsNoClaiming.contains(flocation.getWorldName())) {
|
||||||
else if (Conf.worldsNoClaiming.contains(flocation.getWorldName())) {
|
|
||||||
error = P.p.txt.parse(TL.CLAIM_DISABLED.toString());
|
error = P.p.txt.parse(TL.CLAIM_DISABLED.toString());
|
||||||
} else if (this.isAdminBypassing()) {
|
} else if (this.isAdminBypassing()) {
|
||||||
return true;
|
return true;
|
||||||
@ -794,8 +793,6 @@ public abstract class MemoryFPlayer implements FPlayer {
|
|||||||
return attemptClaim(forFaction, new FLocation(location), notifyFailure);
|
return attemptClaim(forFaction, new FLocation(location), notifyFailure);
|
||||||
}
|
}
|
||||||
|
|
||||||
boolean playerAlerts = false;
|
|
||||||
|
|
||||||
public boolean shouldBeSaved() {
|
public boolean shouldBeSaved() {
|
||||||
return this.hasFaction() || (this.getPowerRounded() != this.getPowerMaxRounded() && this.getPowerRounded() != (int) Math.round(Conf.powerPlayerStarting));
|
return this.hasFaction() || (this.getPowerRounded() != this.getPowerMaxRounded() && this.getPowerRounded() != (int) Math.round(Conf.powerPlayerStarting));
|
||||||
}
|
}
|
||||||
@ -873,15 +870,6 @@ public abstract class MemoryFPlayer implements FPlayer {
|
|||||||
isFlying = fly;
|
isFlying = fly;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public boolean inVault = false;
|
|
||||||
|
|
||||||
public boolean isInVault() {
|
public boolean isInVault() {
|
||||||
return inVault;
|
return inVault;
|
||||||
}
|
}
|
||||||
@ -921,14 +909,14 @@ public abstract class MemoryFPlayer implements FPlayer {
|
|||||||
enteringPasswordWarp = warp;
|
enteringPasswordWarp = warp;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getEnteringWarp() {
|
|
||||||
return enteringPasswordWarp;
|
|
||||||
}
|
|
||||||
|
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
// Message Sending Helpers
|
// Message Sending Helpers
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
|
|
||||||
|
public String getEnteringWarp() {
|
||||||
|
return enteringPasswordWarp;
|
||||||
|
}
|
||||||
|
|
||||||
public void sendMessage(String msg) {
|
public void sendMessage(String msg) {
|
||||||
if (msg.contains("{null}")) {
|
if (msg.contains("{null}")) {
|
||||||
return; // user wants this message to not send
|
return; // user wants this message to not send
|
||||||
@ -963,7 +951,7 @@ public abstract class MemoryFPlayer implements FPlayer {
|
|||||||
|
|
||||||
public void sendFancyMessage(List<FancyMessage> messages) {
|
public void sendFancyMessage(List<FancyMessage> messages) {
|
||||||
Player player = getPlayer();
|
Player player = getPlayer();
|
||||||
if (player == null || !player.isOnGround()) {
|
if (player == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -998,13 +986,13 @@ public abstract class MemoryFPlayer implements FPlayer {
|
|||||||
return id;
|
return id;
|
||||||
}
|
}
|
||||||
|
|
||||||
public abstract void remove();
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setId(String id) {
|
public void setId(String id) {
|
||||||
this.id = id;
|
this.id = id;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public abstract void remove();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void clearWarmup() {
|
public void clearWarmup() {
|
||||||
if (warmup != null) {
|
if (warmup != null) {
|
||||||
@ -1042,12 +1030,18 @@ public abstract class MemoryFPlayer implements FPlayer {
|
|||||||
Player me = this.getPlayer();
|
Player me = this.getPlayer();
|
||||||
int radius = Conf.enemyFlyCheckRadius;
|
int radius = Conf.enemyFlyCheckRadius;
|
||||||
for (Entity e : me.getNearbyEntities(radius, 255, radius)) {
|
for (Entity e : me.getNearbyEntities(radius, 255, radius)) {
|
||||||
if (e == null) { continue; }
|
if (e == null) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
if (e instanceof Player) {
|
if (e instanceof Player) {
|
||||||
Player eplayer = (((Player) e).getPlayer());
|
Player eplayer = (((Player) e).getPlayer());
|
||||||
if (eplayer == null) { continue; }
|
if (eplayer == null) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
FPlayer efplayer = FPlayers.getInstance().getByPlayer(eplayer);
|
FPlayer efplayer = FPlayers.getInstance().getByPlayer(eplayer);
|
||||||
if (efplayer == null) { continue; }
|
if (efplayer == null) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
if (this.getRelationTo(efplayer).equals(Relation.ENEMY)) {
|
if (this.getRelationTo(efplayer).equals(Relation.ENEMY)) {
|
||||||
|
|
||||||
this.setFlying(false);
|
this.setFlying(false);
|
||||||
@ -1071,7 +1065,6 @@ public abstract class MemoryFPlayer implements FPlayer {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Boolean canflyinSafezone() {
|
public Boolean canflyinSafezone() {
|
||||||
return getPlayer().hasPermission("factions.fly.safezone");
|
return getPlayer().hasPermission("factions.fly.safezone");
|
||||||
@ -1102,8 +1095,6 @@ public abstract class MemoryFPlayer implements FPlayer {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
boolean inspectMode = false;
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isInspectMode() {
|
public boolean isInspectMode() {
|
||||||
return inspectMode;
|
return inspectMode;
|
||||||
|
@ -33,6 +33,11 @@ import static com.massivecraft.factions.util.InventoryUtil.InventoryToString;
|
|||||||
import static com.massivecraft.factions.util.InventoryUtil.StringToInventory;
|
import static com.massivecraft.factions.util.InventoryUtil.StringToInventory;
|
||||||
|
|
||||||
public abstract class MemoryFaction implements Faction, EconomyParticipator {
|
public abstract class MemoryFaction implements Faction, EconomyParticipator {
|
||||||
|
public HashMap<Integer, String> rules = new HashMap<Integer, String>();
|
||||||
|
public int tnt;
|
||||||
|
public Location checkpoint;
|
||||||
|
public LazyLocation vault;
|
||||||
|
public HashMap<String, Integer> upgrades = new HashMap<>();
|
||||||
protected String id = null;
|
protected String id = null;
|
||||||
protected boolean peacefulExplosionsEnabled;
|
protected boolean peacefulExplosionsEnabled;
|
||||||
protected boolean permanent;
|
protected boolean permanent;
|
||||||
@ -53,11 +58,61 @@ public abstract class MemoryFaction implements Faction, EconomyParticipator {
|
|||||||
protected HashMap<String, List<String>> announcements = new HashMap<>();
|
protected HashMap<String, List<String>> announcements = new HashMap<>();
|
||||||
protected ConcurrentHashMap<String, LazyLocation> warps = new ConcurrentHashMap<>();
|
protected ConcurrentHashMap<String, LazyLocation> warps = new ConcurrentHashMap<>();
|
||||||
protected ConcurrentHashMap<String, String> warpPasswords = new ConcurrentHashMap<>();
|
protected ConcurrentHashMap<String, String> warpPasswords = new ConcurrentHashMap<>();
|
||||||
private long lastDeath;
|
|
||||||
protected int maxVaults;
|
protected int maxVaults;
|
||||||
protected Role defaultRole;
|
protected Role defaultRole;
|
||||||
protected Map<Permissable, Map<PermissableAction, Access>> permissions = new HashMap<>();
|
protected Map<Permissable, Map<PermissableAction, Access>> permissions = new HashMap<>();
|
||||||
protected Set<BanInfo> bans = new HashSet<>();
|
protected Set<BanInfo> bans = new HashSet<>();
|
||||||
|
String chestSerialized = null;
|
||||||
|
Map<String, Object> bannerSerialized;
|
||||||
|
private long lastDeath;
|
||||||
|
|
||||||
|
// -------------------------------------------- //
|
||||||
|
// Construct
|
||||||
|
// -------------------------------------------- //
|
||||||
|
public MemoryFaction() {
|
||||||
|
}
|
||||||
|
|
||||||
|
public MemoryFaction(String id) {
|
||||||
|
this.id = id;
|
||||||
|
this.open = Conf.newFactionsDefaultOpen;
|
||||||
|
this.tag = "???";
|
||||||
|
this.description = TL.GENERIC_DEFAULTDESCRIPTION.toString();
|
||||||
|
this.lastPlayerLoggedOffTime = 0;
|
||||||
|
this.peaceful = false;
|
||||||
|
this.peacefulExplosionsEnabled = false;
|
||||||
|
this.permanent = false;
|
||||||
|
this.money = 0.0;
|
||||||
|
this.powerBoost = 0.0;
|
||||||
|
this.foundedDate = System.currentTimeMillis();
|
||||||
|
this.maxVaults = Conf.defaultMaxVaults;
|
||||||
|
this.defaultRole = Role.RECRUIT;
|
||||||
|
|
||||||
|
resetPerms(); // Reset on new Faction so it has default values.
|
||||||
|
}
|
||||||
|
|
||||||
|
public MemoryFaction(MemoryFaction old) {
|
||||||
|
id = old.id;
|
||||||
|
peacefulExplosionsEnabled = old.peacefulExplosionsEnabled;
|
||||||
|
permanent = old.permanent;
|
||||||
|
tag = old.tag;
|
||||||
|
description = old.description;
|
||||||
|
open = old.open;
|
||||||
|
foundedDate = old.foundedDate;
|
||||||
|
peaceful = old.peaceful;
|
||||||
|
permanentPower = old.permanentPower;
|
||||||
|
home = old.home;
|
||||||
|
lastPlayerLoggedOffTime = old.lastPlayerLoggedOffTime;
|
||||||
|
money = old.money;
|
||||||
|
powerBoost = old.powerBoost;
|
||||||
|
relationWish = old.relationWish;
|
||||||
|
claimOwnership = old.claimOwnership;
|
||||||
|
fplayers = new HashSet<>();
|
||||||
|
invites = old.invites;
|
||||||
|
announcements = old.announcements;
|
||||||
|
this.defaultRole = Role.NORMAL;
|
||||||
|
|
||||||
|
resetPerms(); // Reset on new Faction so it has default values.
|
||||||
|
}
|
||||||
|
|
||||||
public HashMap<String, List<String>> getAnnouncements() {
|
public HashMap<String, List<String>> getAnnouncements() {
|
||||||
return this.announcements;
|
return this.announcements;
|
||||||
@ -184,8 +239,6 @@ public abstract class MemoryFaction implements Faction, EconomyParticipator {
|
|||||||
return this.bans;
|
return this.bans;
|
||||||
}
|
}
|
||||||
|
|
||||||
public HashMap<Integer,String> rules = new HashMap<Integer, String>();
|
|
||||||
|
|
||||||
public String getRule(int index) {
|
public String getRule(int index) {
|
||||||
if (rules.size() == 0) return null;
|
if (rules.size() == 0) return null;
|
||||||
return rules.get(index);
|
return rules.get(index);
|
||||||
@ -205,8 +258,6 @@ public abstract class MemoryFaction implements Faction, EconomyParticipator {
|
|||||||
rules = newRule;
|
rules = newRule;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int tnt;
|
|
||||||
|
|
||||||
public void addTnt(int amt) {
|
public void addTnt(int amt) {
|
||||||
tnt += amt;
|
tnt += amt;
|
||||||
}
|
}
|
||||||
@ -215,11 +266,9 @@ public abstract class MemoryFaction implements Faction, EconomyParticipator {
|
|||||||
tnt -= amt;
|
tnt -= amt;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getTnt() { return tnt; }
|
public int getTnt() {
|
||||||
|
return tnt;
|
||||||
public Location checkpoint;
|
}
|
||||||
|
|
||||||
public LazyLocation vault;
|
|
||||||
|
|
||||||
public Location getVault() {
|
public Location getVault() {
|
||||||
if (vault == null) {
|
if (vault == null) {
|
||||||
@ -227,6 +276,7 @@ public abstract class MemoryFaction implements Faction, EconomyParticipator {
|
|||||||
}
|
}
|
||||||
return vault.getLocation();
|
return vault.getLocation();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setVault(Location vaultLocation) {
|
public void setVault(Location vaultLocation) {
|
||||||
if (vaultLocation == null) {
|
if (vaultLocation == null) {
|
||||||
vault = null;
|
vault = null;
|
||||||
@ -236,16 +286,13 @@ public abstract class MemoryFaction implements Faction, EconomyParticipator {
|
|||||||
vault = newlocation;
|
vault = newlocation;
|
||||||
}
|
}
|
||||||
|
|
||||||
public HashMap<String,Integer> upgrades = new HashMap<>();
|
|
||||||
|
|
||||||
public int getUpgrade(String key) {
|
public int getUpgrade(String key) {
|
||||||
if (upgrades.keySet().contains(key)) { return upgrades.get(key);}
|
if (upgrades.keySet().contains(key)) {
|
||||||
|
return upgrades.get(key);
|
||||||
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
String chestSerialized = null;
|
|
||||||
Map<String, Object> bannerSerialized;
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Inventory getChest() {
|
public Inventory getChest() {
|
||||||
int level = getUpgrade("Chest");
|
int level = getUpgrade("Chest");
|
||||||
@ -278,8 +325,6 @@ public abstract class MemoryFaction implements Faction, EconomyParticipator {
|
|||||||
chestSerialized = InventoryToString(inventory.getContents());
|
chestSerialized = InventoryToString(inventory.getContents());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setBannerPattern(ItemStack banner) {
|
public void setBannerPattern(ItemStack banner) {
|
||||||
bannerSerialized = banner.serialize();
|
bannerSerialized = banner.serialize();
|
||||||
@ -293,16 +338,17 @@ public abstract class MemoryFaction implements Faction, EconomyParticipator {
|
|||||||
return ItemStack.deserialize(bannerSerialized);
|
return ItemStack.deserialize(bannerSerialized);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setUpgrades(String key,int level){ upgrades.put(key,level); }
|
public void setUpgrades(String key, int level) {
|
||||||
|
upgrades.put(key, level);
|
||||||
|
|
||||||
public void setCheckpoint(Location location){
|
|
||||||
checkpoint = location;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public Location getCheckpoint() {
|
public Location getCheckpoint() {
|
||||||
return checkpoint;
|
return checkpoint;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setCheckpoint(Location location) {
|
||||||
|
checkpoint = location;
|
||||||
|
}
|
||||||
|
|
||||||
public void clearRules() {
|
public void clearRules() {
|
||||||
rules.clear();
|
rules.clear();
|
||||||
@ -328,14 +374,14 @@ public abstract class MemoryFaction implements Faction, EconomyParticipator {
|
|||||||
this.peaceful = isPeaceful;
|
this.peaceful = isPeaceful;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setPeacefulExplosionsEnabled(boolean val) {
|
|
||||||
peacefulExplosionsEnabled = val;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean getPeacefulExplosionsEnabled() {
|
public boolean getPeacefulExplosionsEnabled() {
|
||||||
return this.peacefulExplosionsEnabled;
|
return this.peacefulExplosionsEnabled;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setPeacefulExplosionsEnabled(boolean val) {
|
||||||
|
peacefulExplosionsEnabled = val;
|
||||||
|
}
|
||||||
|
|
||||||
public boolean noExplosionsInTerritory() {
|
public boolean noExplosionsInTerritory() {
|
||||||
return this.peaceful && !peacefulExplosionsEnabled;
|
return this.peaceful && !peacefulExplosionsEnabled;
|
||||||
}
|
}
|
||||||
@ -352,6 +398,13 @@ public abstract class MemoryFaction implements Faction, EconomyParticipator {
|
|||||||
return this.tag;
|
return this.tag;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setTag(String str) {
|
||||||
|
if (Conf.factionTagForceUpperCase) {
|
||||||
|
str = str.toUpperCase();
|
||||||
|
}
|
||||||
|
this.tag = str;
|
||||||
|
}
|
||||||
|
|
||||||
public String getTag(String prefix) {
|
public String getTag(String prefix) {
|
||||||
return prefix + this.tag;
|
return prefix + this.tag;
|
||||||
}
|
}
|
||||||
@ -370,14 +423,6 @@ public abstract class MemoryFaction implements Faction, EconomyParticipator {
|
|||||||
return this.getTag(this.getColorTo(otherFplayer).toString());
|
return this.getTag(this.getColorTo(otherFplayer).toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setTag(String str) {
|
|
||||||
if (Conf.factionTagForceUpperCase) {
|
|
||||||
str = str.toUpperCase();
|
|
||||||
}
|
|
||||||
this.tag = str;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public String getComparisonTag() {
|
public String getComparisonTag() {
|
||||||
return MiscUtil.getComparisonString(this.tag);
|
return MiscUtil.getComparisonString(this.tag);
|
||||||
}
|
}
|
||||||
@ -390,10 +435,6 @@ public abstract class MemoryFaction implements Faction, EconomyParticipator {
|
|||||||
this.description = value;
|
this.description = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setHome(Location home) {
|
|
||||||
this.home = new LazyLocation(home);
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean hasHome() {
|
public boolean hasHome() {
|
||||||
return this.getHome() != null;
|
return this.getHome() != null;
|
||||||
}
|
}
|
||||||
@ -403,6 +444,10 @@ public abstract class MemoryFaction implements Faction, EconomyParticipator {
|
|||||||
return (this.home != null) ? this.home.getLocation() : null;
|
return (this.home != null) ? this.home.getLocation() : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setHome(Location home) {
|
||||||
|
this.home = new LazyLocation(home);
|
||||||
|
}
|
||||||
|
|
||||||
public long getFoundedDate() {
|
public long getFoundedDate() {
|
||||||
if (this.foundedDate == 0) {
|
if (this.foundedDate == 0) {
|
||||||
setFoundedDate(System.currentTimeMillis());
|
setFoundedDate(System.currentTimeMillis());
|
||||||
@ -434,7 +479,6 @@ public abstract class MemoryFaction implements Faction, EconomyParticipator {
|
|||||||
return aid;
|
return aid;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public Integer getPermanentPower() {
|
public Integer getPermanentPower() {
|
||||||
return this.permanentPower;
|
return this.permanentPower;
|
||||||
}
|
}
|
||||||
@ -461,14 +505,18 @@ public abstract class MemoryFaction implements Faction, EconomyParticipator {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setLastDeath(long time) {
|
|
||||||
this.lastDeath = time;
|
|
||||||
}
|
|
||||||
|
|
||||||
public long getLastDeath() {
|
public long getLastDeath() {
|
||||||
return this.lastDeath;
|
return this.lastDeath;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// -------------------------------------------- //
|
||||||
|
// F Permissions stuff
|
||||||
|
// -------------------------------------------- //
|
||||||
|
|
||||||
|
public void setLastDeath(long time) {
|
||||||
|
this.lastDeath = time;
|
||||||
|
}
|
||||||
|
|
||||||
public int getKills() {
|
public int getKills() {
|
||||||
int kills = 0;
|
int kills = 0;
|
||||||
for (FPlayer fp : getFPlayers()) {
|
for (FPlayer fp : getFPlayers()) {
|
||||||
@ -487,11 +535,6 @@ public abstract class MemoryFaction implements Faction, EconomyParticipator {
|
|||||||
return deaths;
|
return deaths;
|
||||||
}
|
}
|
||||||
|
|
||||||
// -------------------------------------------- //
|
|
||||||
// F Permissions stuff
|
|
||||||
// -------------------------------------------- //
|
|
||||||
|
|
||||||
|
|
||||||
public Access getAccess(Permissable permissable, PermissableAction permissableAction) {
|
public Access getAccess(Permissable permissable, PermissableAction permissableAction) {
|
||||||
if (permissable == null || permissableAction == null) {
|
if (permissable == null || permissableAction == null) {
|
||||||
return Access.UNDEFINED;
|
return Access.UNDEFINED;
|
||||||
@ -533,8 +576,6 @@ public abstract class MemoryFaction implements Faction, EconomyParticipator {
|
|||||||
return Access.UNDEFINED;
|
return Access.UNDEFINED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public void setPermission(Permissable permissable, PermissableAction permissableAction, Access access) {
|
public void setPermission(Permissable permissable, PermissableAction permissableAction, Access access) {
|
||||||
Map<PermissableAction, Access> accessMap = permissions.get(permissable);
|
Map<PermissableAction, Access> accessMap = permissions.get(permissable);
|
||||||
if (accessMap == null) {
|
if (accessMap == null) {
|
||||||
@ -587,54 +628,6 @@ public abstract class MemoryFaction implements Faction, EconomyParticipator {
|
|||||||
this.defaultRole = role;
|
this.defaultRole = role;
|
||||||
}
|
}
|
||||||
|
|
||||||
// -------------------------------------------- //
|
|
||||||
// Construct
|
|
||||||
// -------------------------------------------- //
|
|
||||||
public MemoryFaction() {
|
|
||||||
}
|
|
||||||
|
|
||||||
public MemoryFaction(String id) {
|
|
||||||
this.id = id;
|
|
||||||
this.open = Conf.newFactionsDefaultOpen;
|
|
||||||
this.tag = "???";
|
|
||||||
this.description = TL.GENERIC_DEFAULTDESCRIPTION.toString();
|
|
||||||
this.lastPlayerLoggedOffTime = 0;
|
|
||||||
this.peaceful = false;
|
|
||||||
this.peacefulExplosionsEnabled = false;
|
|
||||||
this.permanent = false;
|
|
||||||
this.money = 0.0;
|
|
||||||
this.powerBoost = 0.0;
|
|
||||||
this.foundedDate = System.currentTimeMillis();
|
|
||||||
this.maxVaults = Conf.defaultMaxVaults;
|
|
||||||
this.defaultRole = Role.RECRUIT;
|
|
||||||
|
|
||||||
resetPerms(); // Reset on new Faction so it has default values.
|
|
||||||
}
|
|
||||||
|
|
||||||
public MemoryFaction(MemoryFaction old) {
|
|
||||||
id = old.id;
|
|
||||||
peacefulExplosionsEnabled = old.peacefulExplosionsEnabled;
|
|
||||||
permanent = old.permanent;
|
|
||||||
tag = old.tag;
|
|
||||||
description = old.description;
|
|
||||||
open = old.open;
|
|
||||||
foundedDate = old.foundedDate;
|
|
||||||
peaceful = old.peaceful;
|
|
||||||
permanentPower = old.permanentPower;
|
|
||||||
home = old.home;
|
|
||||||
lastPlayerLoggedOffTime = old.lastPlayerLoggedOffTime;
|
|
||||||
money = old.money;
|
|
||||||
powerBoost = old.powerBoost;
|
|
||||||
relationWish = old.relationWish;
|
|
||||||
claimOwnership = old.claimOwnership;
|
|
||||||
fplayers = new HashSet<>();
|
|
||||||
invites = old.invites;
|
|
||||||
announcements = old.announcements;
|
|
||||||
this.defaultRole = Role.NORMAL;
|
|
||||||
|
|
||||||
resetPerms(); // Reset on new Faction so it has default values.
|
|
||||||
}
|
|
||||||
|
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
// Extra Getters And Setters
|
// Extra Getters And Setters
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
|
@ -23,6 +23,12 @@ import java.util.logging.Level;
|
|||||||
public class JSONFPlayers extends MemoryFPlayers {
|
public class JSONFPlayers extends MemoryFPlayers {
|
||||||
// Info on how to persist
|
// Info on how to persist
|
||||||
private Gson gson;
|
private Gson gson;
|
||||||
|
private File file;
|
||||||
|
|
||||||
|
public JSONFPlayers() {
|
||||||
|
file = new File(P.p.getDataFolder(), "players.json");
|
||||||
|
gson = P.p.gson;
|
||||||
|
}
|
||||||
|
|
||||||
public Gson getGson() {
|
public Gson getGson() {
|
||||||
return gson;
|
return gson;
|
||||||
@ -32,13 +38,6 @@ public class JSONFPlayers extends MemoryFPlayers {
|
|||||||
this.gson = gson;
|
this.gson = gson;
|
||||||
}
|
}
|
||||||
|
|
||||||
private File file;
|
|
||||||
|
|
||||||
public JSONFPlayers() {
|
|
||||||
file = new File(P.p.getDataFolder(), "players.json");
|
|
||||||
gson = P.p.gson;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void convertFrom(MemoryFPlayers old) {
|
public void convertFrom(MemoryFPlayers old) {
|
||||||
this.fPlayers.putAll(Maps.transformValues(old.fPlayers, new Function<FPlayer, JSONFPlayer>() {
|
this.fPlayers.putAll(Maps.transformValues(old.fPlayers, new Function<FPlayer, JSONFPlayer>() {
|
||||||
@Override
|
@Override
|
||||||
|
@ -23,25 +23,24 @@ import java.util.logging.Level;
|
|||||||
public class JSONFactions extends MemoryFactions {
|
public class JSONFactions extends MemoryFactions {
|
||||||
// Info on how to persist
|
// Info on how to persist
|
||||||
private final Gson gson;
|
private final Gson gson;
|
||||||
|
private final File file;
|
||||||
|
|
||||||
|
public JSONFactions() {
|
||||||
|
this.file = new File(P.p.getDataFolder(), "factions.json");
|
||||||
|
this.gson = P.p.gson;
|
||||||
|
this.nextId = 1;
|
||||||
|
}
|
||||||
|
|
||||||
public Gson getGson() {
|
public Gson getGson() {
|
||||||
return gson;
|
return gson;
|
||||||
}
|
}
|
||||||
|
|
||||||
private final File file;
|
|
||||||
|
|
||||||
public File getFile() {
|
|
||||||
return file;
|
|
||||||
}
|
|
||||||
|
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
// CONSTRUCTORS
|
// CONSTRUCTORS
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
|
|
||||||
public JSONFactions() {
|
public File getFile() {
|
||||||
this.file = new File(P.p.getDataFolder(), "factions.json");
|
return file;
|
||||||
this.gson = P.p.gson;
|
|
||||||
this.nextId = 1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void forceSave() {
|
public void forceSave() {
|
||||||
|
@ -20,7 +20,7 @@ public class DiscUtil {
|
|||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
// BYTE
|
// BYTE
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
|
private static HashMap<String, Lock> locks = new HashMap<>();
|
||||||
|
|
||||||
public static byte[] readBytes(File file) throws IOException {
|
public static byte[] readBytes(File file) throws IOException {
|
||||||
int length = (int) file.length();
|
int length = (int) file.length();
|
||||||
@ -34,29 +34,27 @@ public class DiscUtil {
|
|||||||
return output;
|
return output;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// -------------------------------------------- //
|
||||||
|
// STRING
|
||||||
|
// -------------------------------------------- //
|
||||||
|
|
||||||
public static void writeBytes(File file, byte[] bytes) throws IOException {
|
public static void writeBytes(File file, byte[] bytes) throws IOException {
|
||||||
FileOutputStream out = new FileOutputStream(file);
|
FileOutputStream out = new FileOutputStream(file);
|
||||||
out.write(bytes);
|
out.write(bytes);
|
||||||
out.close();
|
out.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
// -------------------------------------------- //
|
|
||||||
// STRING
|
|
||||||
// -------------------------------------------- //
|
|
||||||
|
|
||||||
public static void write(File file, String content) throws IOException {
|
public static void write(File file, String content) throws IOException {
|
||||||
writeBytes(file, utf8(content));
|
writeBytes(file, utf8(content));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String read(File file) throws IOException {
|
|
||||||
return utf8(readBytes(file));
|
|
||||||
}
|
|
||||||
|
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
// CATCH
|
// CATCH
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
|
|
||||||
private static HashMap<String, Lock> locks = new HashMap<>();
|
public static String read(File file) throws IOException {
|
||||||
|
return utf8(readBytes(file));
|
||||||
|
}
|
||||||
|
|
||||||
public static boolean writeCatch(final File file, final String content, boolean sync) {
|
public static boolean writeCatch(final File file, final String content, boolean sync) {
|
||||||
String name = file.getName();
|
String name = file.getName();
|
||||||
|
@ -730,7 +730,6 @@ public enum TL {
|
|||||||
COMMAND_RULES_CLEAR_SUCCESS("&cRule cleared successfully!"),
|
COMMAND_RULES_CLEAR_SUCCESS("&cRule cleared successfully!"),
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 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
|
||||||
*/
|
*/
|
||||||
@ -811,7 +810,6 @@ public enum TL {
|
|||||||
GENERIC_PLACEHOLDER("<This is a placeholder for a message you should not see>"),
|
GENERIC_PLACEHOLDER("<This is a placeholder for a message you should not see>"),
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
WARBANNER_NOFACTION("&cYou need a faction to use a warbanner!"),
|
WARBANNER_NOFACTION("&cYou need a faction to use a warbanner!"),
|
||||||
WARBANNER_COOLDOWN("&cThe warbanner is on cooldown for your faction!"),
|
WARBANNER_COOLDOWN("&cThe warbanner is on cooldown for your faction!"),
|
||||||
WARBANNER_INVALIDLOC("&cYou can only use warbanners in enemy land or the warzone"),
|
WARBANNER_INVALIDLOC("&cYou can only use warbanners in enemy land or the warzone"),
|
||||||
@ -945,10 +943,10 @@ public enum TL {
|
|||||||
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.");
|
||||||
|
|
||||||
|
public static SimpleDateFormat sdf;
|
||||||
|
private static YamlConfiguration LANG;
|
||||||
private String path;
|
private String path;
|
||||||
private String def;
|
private String def;
|
||||||
private static YamlConfiguration LANG;
|
|
||||||
public static SimpleDateFormat sdf;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Lang enum constructor.
|
* Lang enum constructor.
|
||||||
|
@ -86,20 +86,31 @@ public enum TagReplacer {
|
|||||||
private TagType type;
|
private TagType type;
|
||||||
private String tag;
|
private String tag;
|
||||||
|
|
||||||
protected enum TagType {
|
|
||||||
FANCY(0), PLAYER(1), FACTION(2), GENERAL(3);
|
|
||||||
public int id;
|
|
||||||
|
|
||||||
TagType(int id) {
|
|
||||||
this.id = id;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
TagReplacer(TagType type, String tag) {
|
TagReplacer(TagType type, String tag) {
|
||||||
this.type = type;
|
this.type = type;
|
||||||
this.tag = tag;
|
this.tag = tag;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns a list of all the variables we can use for this type<br>
|
||||||
|
*
|
||||||
|
* @param type the type we want
|
||||||
|
* @return a list of all the variables with this type
|
||||||
|
*/
|
||||||
|
protected static List<TagReplacer> getByType(TagType type) {
|
||||||
|
List<TagReplacer> tagReplacers = new ArrayList<>();
|
||||||
|
for (TagReplacer tagReplacer : TagReplacer.values()) {
|
||||||
|
if (type == TagType.FANCY) {
|
||||||
|
if (tagReplacer.type == TagType.FANCY) {
|
||||||
|
tagReplacers.add(tagReplacer);
|
||||||
|
}
|
||||||
|
} else if (tagReplacer.type.id >= type.id) {
|
||||||
|
tagReplacers.add(tagReplacer);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return tagReplacers;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Protected access to this generic server related variable
|
* Protected access to this generic server related variable
|
||||||
*
|
*
|
||||||
@ -245,26 +256,6 @@ public enum TagReplacer {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns a list of all the variables we can use for this type<br>
|
|
||||||
*
|
|
||||||
* @param type the type we want
|
|
||||||
* @return a list of all the variables with this type
|
|
||||||
*/
|
|
||||||
protected static List<TagReplacer> getByType(TagType type) {
|
|
||||||
List<TagReplacer> tagReplacers = new ArrayList<>();
|
|
||||||
for (TagReplacer tagReplacer : TagReplacer.values()) {
|
|
||||||
if (type == TagType.FANCY) {
|
|
||||||
if (tagReplacer.type == TagType.FANCY) {
|
|
||||||
tagReplacers.add(tagReplacer);
|
|
||||||
}
|
|
||||||
} else if (tagReplacer.type.id >= type.id) {
|
|
||||||
tagReplacers.add(tagReplacer);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return tagReplacers;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param original raw line with variables
|
* @param original raw line with variables
|
||||||
* @param value what to replace var in raw line with
|
* @param value what to replace var in raw line with
|
||||||
@ -293,4 +284,13 @@ public enum TagReplacer {
|
|||||||
public String getTag() {
|
public String getTag() {
|
||||||
return this.tag;
|
return this.tag;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected enum TagType {
|
||||||
|
FANCY(0), PLAYER(1), FACTION(2), GENERAL(3);
|
||||||
|
public int id;
|
||||||
|
|
||||||
|
TagType(int id) {
|
||||||
|
this.id = id;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -10,34 +10,23 @@ import java.util.regex.Pattern;
|
|||||||
|
|
||||||
public class TextUtil {
|
public class TextUtil {
|
||||||
|
|
||||||
public Map<String, String> tags;
|
public static final transient Pattern patternTag = Pattern.compile("<([a-zA-Z0-9_]*)>");
|
||||||
|
private final static String titleizeLine = repeat("-", 52);
|
||||||
public TextUtil() {
|
|
||||||
this.tags = new HashMap<>();
|
|
||||||
}
|
|
||||||
|
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
// Top-level parsing functions.
|
// Top-level parsing functions.
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
|
private final static int titleizeBalance = -1;
|
||||||
public String parse(String str, Object... args) {
|
public Map<String, String> tags;
|
||||||
return String.format(this.parse(str), args);
|
|
||||||
}
|
|
||||||
|
|
||||||
public String parse(String str) {
|
|
||||||
return this.parseTags(parseColor(str));
|
|
||||||
}
|
|
||||||
|
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
// Tag parsing
|
// Tag parsing
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
|
|
||||||
public String parseTags(String str) {
|
public TextUtil() {
|
||||||
return replaceTags(str, this.tags);
|
this.tags = new HashMap<>();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static final transient Pattern patternTag = Pattern.compile("<([a-zA-Z0-9_]*)>");
|
|
||||||
|
|
||||||
public static String replaceTags(String str, Map<String, String> tags) {
|
public static String replaceTags(String str, Map<String, String> tags) {
|
||||||
StringBuffer ret = new StringBuffer();
|
StringBuffer ret = new StringBuffer();
|
||||||
Matcher matcher = patternTag.matcher(str);
|
Matcher matcher = patternTag.matcher(str);
|
||||||
@ -54,14 +43,6 @@ public class TextUtil {
|
|||||||
return ret.toString();
|
return ret.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
// -------------------------------------------- //
|
|
||||||
// Fancy parsing
|
|
||||||
// -------------------------------------------- //
|
|
||||||
|
|
||||||
public FancyMessage parseFancy(String prefix) {
|
|
||||||
return toFancy(parse(prefix));
|
|
||||||
}
|
|
||||||
|
|
||||||
public static FancyMessage toFancy(String first) {
|
public static FancyMessage toFancy(String first) {
|
||||||
String text = "";
|
String text = "";
|
||||||
FancyMessage message = new FancyMessage(text);
|
FancyMessage message = new FancyMessage(text);
|
||||||
@ -101,7 +82,7 @@ public class TextUtil {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
// Color parsing
|
// Fancy parsing
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
|
|
||||||
public static String parseColor(String string) {
|
public static String parseColor(String string) {
|
||||||
@ -118,6 +99,10 @@ public class TextUtil {
|
|||||||
return string;
|
return string;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// -------------------------------------------- //
|
||||||
|
// Color parsing
|
||||||
|
// -------------------------------------------- //
|
||||||
|
|
||||||
public static String parseColorAcc(String string) {
|
public static String parseColorAcc(String string) {
|
||||||
return string.replace("`e", "").replace("`r", ChatColor.RED.toString()).replace("`R", ChatColor.DARK_RED.toString()).replace("`y", ChatColor.YELLOW.toString()).replace("`Y", ChatColor.GOLD.toString()).replace("`g", ChatColor.GREEN.toString()).replace("`G", ChatColor.DARK_GREEN.toString()).replace("`a", ChatColor.AQUA.toString()).replace("`A", ChatColor.DARK_AQUA.toString()).replace("`b", ChatColor.BLUE.toString()).replace("`B", ChatColor.DARK_BLUE.toString()).replace("`p", ChatColor.LIGHT_PURPLE.toString()).replace("`P", ChatColor.DARK_PURPLE.toString()).replace("`k", ChatColor.BLACK.toString()).replace("`s", ChatColor.GRAY.toString()).replace("`S", ChatColor.DARK_GRAY.toString()).replace("`w", ChatColor.WHITE.toString());
|
return string.replace("`e", "").replace("`r", ChatColor.RED.toString()).replace("`R", ChatColor.DARK_RED.toString()).replace("`y", ChatColor.YELLOW.toString()).replace("`Y", ChatColor.GOLD.toString()).replace("`g", ChatColor.GREEN.toString()).replace("`G", ChatColor.DARK_GREEN.toString()).replace("`a", ChatColor.AQUA.toString()).replace("`A", ChatColor.DARK_AQUA.toString()).replace("`b", ChatColor.BLUE.toString()).replace("`B", ChatColor.DARK_BLUE.toString()).replace("`p", ChatColor.LIGHT_PURPLE.toString()).replace("`P", ChatColor.DARK_PURPLE.toString()).replace("`k", ChatColor.BLACK.toString()).replace("`s", ChatColor.GRAY.toString()).replace("`S", ChatColor.DARK_GRAY.toString()).replace("`w", ChatColor.WHITE.toString());
|
||||||
}
|
}
|
||||||
@ -126,10 +111,6 @@ public class TextUtil {
|
|||||||
return string.replace("<empty>", "").replace("<black>", "\u00A70").replace("<navy>", "\u00A71").replace("<green>", "\u00A72").replace("<teal>", "\u00A73").replace("<red>", "\u00A74").replace("<purple>", "\u00A75").replace("<gold>", "\u00A76").replace("<silver>", "\u00A77").replace("<gray>", "\u00A78").replace("<blue>", "\u00A79").replace("<lime>", "\u00A7a").replace("<aqua>", "\u00A7b").replace("<rose>", "\u00A7c").replace("<pink>", "\u00A7d").replace("<yellow>", "\u00A7e").replace("<white>", "\u00A7f");
|
return string.replace("<empty>", "").replace("<black>", "\u00A70").replace("<navy>", "\u00A71").replace("<green>", "\u00A72").replace("<teal>", "\u00A73").replace("<red>", "\u00A74").replace("<purple>", "\u00A75").replace("<gold>", "\u00A76").replace("<silver>", "\u00A77").replace("<gray>", "\u00A78").replace("<blue>", "\u00A79").replace("<lime>", "\u00A7a").replace("<aqua>", "\u00A7b").replace("<rose>", "\u00A7c").replace("<pink>", "\u00A7d").replace("<yellow>", "\u00A7e").replace("<white>", "\u00A7f");
|
||||||
}
|
}
|
||||||
|
|
||||||
// -------------------------------------------- //
|
|
||||||
// Standard utils like UCFirst, implode and repeat.
|
|
||||||
// -------------------------------------------- //
|
|
||||||
|
|
||||||
public static String upperCaseFirst(String string) {
|
public static String upperCaseFirst(String string) {
|
||||||
return string.substring(0, 1).toUpperCase() + string.substring(1);
|
return string.substring(0, 1).toUpperCase() + string.substring(1);
|
||||||
}
|
}
|
||||||
@ -145,6 +126,10 @@ public class TextUtil {
|
|||||||
return ret.toString();
|
return ret.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// -------------------------------------------- //
|
||||||
|
// Standard utils like UCFirst, implode and repeat.
|
||||||
|
// -------------------------------------------- //
|
||||||
|
|
||||||
public static String repeat(String s, int times) {
|
public static String repeat(String s, int times) {
|
||||||
if (times <= 0) {
|
if (times <= 0) {
|
||||||
return "";
|
return "";
|
||||||
@ -153,10 +138,6 @@ public class TextUtil {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// -------------------------------------------- //
|
|
||||||
// Material name tools
|
|
||||||
// -------------------------------------------- //
|
|
||||||
|
|
||||||
public static String getMaterialName(Material material) {
|
public static String getMaterialName(Material material) {
|
||||||
return material.toString().replace('_', ' ').toLowerCase();
|
return material.toString().replace('_', ' ').toLowerCase();
|
||||||
}
|
}
|
||||||
@ -165,12 +146,56 @@ public class TextUtil {
|
|||||||
return getMaterialName(Material.getMaterial(materialId));
|
return getMaterialName(Material.getMaterial(materialId));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// -------------------------------------------- //
|
||||||
|
// Material name tools
|
||||||
|
// -------------------------------------------- //
|
||||||
|
|
||||||
|
public static String getBestStartWithCI(Collection<String> candidates, String start) {
|
||||||
|
String ret = null;
|
||||||
|
int best = 0;
|
||||||
|
|
||||||
|
start = start.toLowerCase();
|
||||||
|
int minlength = start.length();
|
||||||
|
for (String candidate : candidates) {
|
||||||
|
if (candidate.length() < minlength) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (!candidate.toLowerCase().startsWith(start)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// The closer to zero the better
|
||||||
|
int lendiff = candidate.length() - minlength;
|
||||||
|
if (lendiff == 0) {
|
||||||
|
return candidate;
|
||||||
|
}
|
||||||
|
if (lendiff < best || best == 0) {
|
||||||
|
best = lendiff;
|
||||||
|
ret = candidate;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String parse(String str, Object... args) {
|
||||||
|
return String.format(this.parse(str), args);
|
||||||
|
}
|
||||||
|
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
// Paging and chrome-tools like titleize
|
// Paging and chrome-tools like titleize
|
||||||
// -------------------------------------------- //
|
// -------------------------------------------- //
|
||||||
|
|
||||||
private final static String titleizeLine = repeat("-", 52);
|
public String parse(String str) {
|
||||||
private final static int titleizeBalance = -1;
|
return this.parseTags(parseColor(str));
|
||||||
|
}
|
||||||
|
|
||||||
|
public String parseTags(String str) {
|
||||||
|
return replaceTags(str, this.tags);
|
||||||
|
}
|
||||||
|
|
||||||
|
public FancyMessage parseFancy(String prefix) {
|
||||||
|
return toFancy(parse(prefix));
|
||||||
|
}
|
||||||
|
|
||||||
public String titleize(String str) {
|
public String titleize(String str) {
|
||||||
String center = ChatColor.DARK_GRAY + "< " + parseTags("<l>") + str + parseTags("<a>") + ChatColor.DARK_GRAY + " >";
|
String center = ChatColor.DARK_GRAY + "< " + parseTags("<l>") + str + parseTags("<a>") + ChatColor.DARK_GRAY + " >";
|
||||||
@ -212,31 +237,4 @@ public class TextUtil {
|
|||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String getBestStartWithCI(Collection<String> candidates, String start) {
|
|
||||||
String ret = null;
|
|
||||||
int best = 0;
|
|
||||||
|
|
||||||
start = start.toLowerCase();
|
|
||||||
int minlength = start.length();
|
|
||||||
for (String candidate : candidates) {
|
|
||||||
if (candidate.length() < minlength) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
if (!candidate.toLowerCase().startsWith(start)) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
// The closer to zero the better
|
|
||||||
int lendiff = candidate.length() - minlength;
|
|
||||||
if (lendiff == 0) {
|
|
||||||
return candidate;
|
|
||||||
}
|
|
||||||
if (lendiff < best || best == 0) {
|
|
||||||
best = lendiff;
|
|
||||||
ret = candidate;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
}
|
}
|
@ -33,28 +33,6 @@ public class UUIDFetcher implements Callable<Map<String, UUID>> {
|
|||||||
this(names, true);
|
this(names, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Map<String, UUID> call() throws Exception {
|
|
||||||
Map<String, UUID> uuidMap = new HashMap<>();
|
|
||||||
int requests = (int) Math.ceil(names.size() / PROFILES_PER_REQUEST);
|
|
||||||
for (int i = 0; i < requests; i++) {
|
|
||||||
HttpURLConnection connection = createConnection();
|
|
||||||
String body = JSONArray.toJSONString(names.subList(i * 100, Math.min((i + 1) * 100, names.size())));
|
|
||||||
writeBody(connection, body);
|
|
||||||
JSONArray array = (JSONArray) jsonParser.parse(new InputStreamReader(connection.getInputStream()));
|
|
||||||
for (Object profile : array) {
|
|
||||||
JSONObject jsonProfile = (JSONObject) profile;
|
|
||||||
String id = (String) jsonProfile.get("id");
|
|
||||||
String name = (String) jsonProfile.get("name");
|
|
||||||
UUID uuid = UUIDFetcher.getUUID(id);
|
|
||||||
uuidMap.put(name, uuid);
|
|
||||||
}
|
|
||||||
if (rateLimiting && i != requests - 1) {
|
|
||||||
Thread.sleep(100L);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return uuidMap;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static void writeBody(HttpURLConnection connection, String body) throws Exception {
|
private static void writeBody(HttpURLConnection connection, String body) throws Exception {
|
||||||
OutputStream stream = connection.getOutputStream();
|
OutputStream stream = connection.getOutputStream();
|
||||||
stream.write(body.getBytes());
|
stream.write(body.getBytes());
|
||||||
@ -97,4 +75,26 @@ public class UUIDFetcher implements Callable<Map<String, UUID>> {
|
|||||||
public static UUID getUUIDOf(String name) throws Exception {
|
public static UUID getUUIDOf(String name) throws Exception {
|
||||||
return new UUIDFetcher(Collections.singletonList(name)).call().get(name);
|
return new UUIDFetcher(Collections.singletonList(name)).call().get(name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Map<String, UUID> call() throws Exception {
|
||||||
|
Map<String, UUID> uuidMap = new HashMap<>();
|
||||||
|
int requests = (int) Math.ceil(names.size() / PROFILES_PER_REQUEST);
|
||||||
|
for (int i = 0; i < requests; i++) {
|
||||||
|
HttpURLConnection connection = createConnection();
|
||||||
|
String body = JSONArray.toJSONString(names.subList(i * 100, Math.min((i + 1) * 100, names.size())));
|
||||||
|
writeBody(connection, body);
|
||||||
|
JSONArray array = (JSONArray) jsonParser.parse(new InputStreamReader(connection.getInputStream()));
|
||||||
|
for (Object profile : array) {
|
||||||
|
JSONObject jsonProfile = (JSONObject) profile;
|
||||||
|
String id = (String) jsonProfile.get("id");
|
||||||
|
String name = (String) jsonProfile.get("name");
|
||||||
|
UUID uuid = UUIDFetcher.getUUID(id);
|
||||||
|
uuidMap.put(name, uuid);
|
||||||
|
}
|
||||||
|
if (rateLimiting && i != requests - 1) {
|
||||||
|
Thread.sleep(100L);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return uuidMap;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user