diff --git a/plugin.yml b/plugin.yml index afe9dbcf..015e7edd 100644 --- a/plugin.yml +++ b/plugin.yml @@ -35,7 +35,6 @@ permissions: factions.flag.any: true factions.perm.any: true factions.kick.any: true - factions.ownershipbypass: true factions.kit.fullplayer: default: true description: Can also create new factions. @@ -64,10 +63,7 @@ permissions: factions.map: true factions.officer: true factions.money.kit.standard: true - factions.noboom: true factions.open: true - factions.owner: true - factions.ownerlist: true factions.power: true factions.power.any: true factions.relation: true @@ -167,12 +163,6 @@ permissions: factions.money.p2f: true factions.open: description: switch if invitation is required to join - factions.owner: - description: set ownership of claimed land - factions.ownerlist: - description: list owner(s) of this claimed land - factions.ownershipbypass: - description: bypass ownership restrictions within own faction's territory factions.power: description: show player power info factions.power.any: diff --git a/src/com/massivecraft/factions/Conf.java b/src/com/massivecraft/factions/Conf.java index c85d718f..fc78ffc6 100644 --- a/src/com/massivecraft/factions/Conf.java +++ b/src/com/massivecraft/factions/Conf.java @@ -106,15 +106,13 @@ public class Conf public static int noPVPDamageToOthersForXSecondsAfterLogin = 3; - public static boolean peacefulTerritoryDisablePVP = true; - public static boolean peacefulTerritoryDisableMonsters = false; - public static boolean peacefulMembersDisablePowerLoss = true; + //public static boolean peacefulMembersDisablePowerLoss = true; public static boolean claimsMustBeConnected = false; public static boolean claimsCanBeUnconnectedIfOwnedByOtherFaction = true; public static int claimsRequireMinFactionMembers = 1; - public static double considerFactionsReallyOfflineAfterXMinutes = 0.0; + //public static double considerFactionsReallyOfflineAfterXMinutes = 0.0; public static int actionDeniedPainAmount = 2; @@ -123,77 +121,8 @@ public class Conf public static Set territoryEnemyDenyCommands = new HashSet(); public static double territoryShieldFactor = 0.3; - /*public static boolean territoryDenyBuild = true; - public static boolean territoryDenyBuildWhenOffline = true; - public static boolean territoryPainBuild = false; - public static boolean territoryPainBuildWhenOffline = false; - public static boolean territoryDenyUseage = true; - public static boolean territoryEnemyDenyBuild = true; - public static boolean territoryEnemyDenyBuildWhenOffline = true; - public static boolean territoryEnemyPainBuild = false; - public static boolean territoryEnemyPainBuildWhenOffline = false; - public static boolean territoryEnemyDenyUseage = true; - public static boolean territoryEnemyProtectMaterials = true; - public static boolean territoryAllyDenyBuild = true; - public static boolean territoryAllyDenyBuildWhenOffline = true; - public static boolean territoryAllyPainBuild = false; - public static boolean territoryAllyPainBuildWhenOffline = false; - public static boolean territoryAllyDenyUseage = true; - public static boolean territoryAllyProtectMaterials = true; - public static boolean territoryTruceDenyBuild = true; - public static boolean territoryTruceDenyBuildWhenOffline = true; - public static boolean territoryTrucePainBuild = false; - public static boolean territoryTrucePainBuildWhenOffline = false; - public static boolean territoryTruceDenyUseage = true; - public static boolean territoryTruceProtectMaterials = true; - public static boolean territoryBlockCreepers = false; - public static boolean territoryBlockCreepersWhenOffline = false; - public static boolean territoryBlockFireballs = false; - public static boolean territoryBlockFireballsWhenOffline = false; - public static boolean territoryBlockTNT = false; - public static boolean territoryBlockTNTWhenOffline = false; - public static boolean territoryDenyEndermanBlocks = true; - public static boolean territoryDenyEndermanBlocksWhenOffline = true;*/ - - /*public static boolean safeZoneDenyBuild = true; - public static boolean safeZoneDenyUseage = true; - public static boolean safeZoneBlockTNT = true; - public static boolean safeZonePreventAllDamageToPlayers = false; - public static boolean safeZoneDenyEndermanBlocks = true; - - public static boolean warZoneDenyBuild = true; - public static boolean warZoneDenyUseage = true; - public static boolean warZoneBlockCreepers = false; - public static boolean warZoneBlockFireballs = false; - public static boolean warZoneBlockTNT = true; - public static boolean warZonePowerLoss = true; - public static boolean warZoneFriendlyFire = false; - public static boolean warZoneDenyEndermanBlocks = true; - */ - - /*public static boolean wildernessDenyBuild = false; - public static boolean wildernessDenyUseage = false; - public static boolean wildernessBlockCreepers = false; - public static boolean wildernessBlockFireballs = false; - public static boolean wildernessBlockTNT = false; - public static boolean wildernessPowerLoss = true; - public static boolean wildernessDenyEndermanBlocks = false;*/ // for claimed areas where further faction-member ownership can be defined - public static boolean ownedAreasEnabled = true; - public static int ownedAreasLimitPerFaction = 0; - public static boolean ownedAreasModeratorsCanSet = false; - public static boolean ownedAreaModeratorsBypass = true; - public static boolean ownedAreaDenyBuild = true; - public static boolean ownedAreaPainBuild = false; - public static boolean ownedAreaProtectMaterials = true; - public static boolean ownedAreaDenyUseage = true; - - public static String ownedLandMessage = "Owner(s): "; - public static String publicLandMessage = "Public faction land."; - public static boolean ownedMessageOnBorder = true; - public static boolean ownedMessageInsideTerritory = true; - public static boolean ownedMessageByChunk = false; public static boolean pistonProtectionThroughDenyBuild = true; @@ -266,7 +195,7 @@ public class Conf public static Set worldsNoPowerLoss = new HashSet(); public static Set worldsIgnorePvP = new HashSet(); // TODO: A better solution Would be to have One wilderness faction per world. - public static Set worldsNoWildernessProtection = new HashSet(); + //public static Set worldsNoWildernessProtection = new HashSet(); public static transient int mapHeight = 8; public static transient int mapWidth = 39; @@ -314,24 +243,6 @@ public class Conf materialsEditTools.add(Material.BUCKET); materialsEditTools.add(Material.WATER_BUCKET); materialsEditTools.add(Material.LAVA_BUCKET); - - - -/* - territoryProtectedMaterialsWhenOffline.add(Material.WOODEN_DOOR); - territoryProtectedMaterialsWhenOffline.add(Material.TRAP_DOOR); - territoryProtectedMaterialsWhenOffline.add(Material.FENCE_GATE); - territoryProtectedMaterialsWhenOffline.add(Material.DISPENSER); - territoryProtectedMaterialsWhenOffline.add(Material.CHEST); - territoryProtectedMaterialsWhenOffline.add(Material.FURNACE); - territoryProtectedMaterialsWhenOffline.add(Material.BURNING_FURNACE); - territoryProtectedMaterialsWhenOffline.add(Material.DIODE_BLOCK_OFF); - territoryProtectedMaterialsWhenOffline.add(Material.DIODE_BLOCK_ON); - - territoryDenyUseageMaterialsWhenOffline.add(Material.FLINT_AND_STEEL); - territoryDenyUseageMaterialsWhenOffline.add(Material.BUCKET); - territoryDenyUseageMaterialsWhenOffline.add(Material.WATER_BUCKET); - territoryDenyUseageMaterialsWhenOffline.add(Material.LAVA_BUCKET);*/ monsters.add(CreatureType.CAVE_SPIDER); monsters.add(CreatureType.CREEPER); diff --git a/src/com/massivecraft/factions/FLocation.java b/src/com/massivecraft/factions/FLocation.java index 2e1ba5eb..48a2fe64 100644 --- a/src/com/massivecraft/factions/FLocation.java +++ b/src/com/massivecraft/factions/FLocation.java @@ -15,7 +15,8 @@ public class FLocation private int x = 0; private int z = 0; -// private final static transient double cellSize = 16; + // TODO: It would be wise to ask yourself is there is a better solution to creating loads of new object + // This object is create many times. //----------------------------------------------// // Constructors diff --git a/src/com/massivecraft/factions/FPlayer.java b/src/com/massivecraft/factions/FPlayer.java index 6c4c4759..8ef07fa2 100644 --- a/src/com/massivecraft/factions/FPlayer.java +++ b/src/com/massivecraft/factions/FPlayer.java @@ -32,10 +32,14 @@ import com.nijikokun.register.payment.Method.MethodAccount; * This means you can use the == operator. No .equals method necessary. */ +// TODO: The players are saved in non order. +// TODO: To many players are saved. There must be ways to improve the selective saving functionality. public class FPlayer extends PlayerEntity implements EconomyParticipator { //private transient String playerName; private transient FLocation lastStoodAt = new FLocation(); // Where did this player stand the last time we checked? + public FLocation getLastStoodAt() { return this.lastStoodAt; } + public void setLastStoodAt(FLocation flocation) { this.lastStoodAt = flocation; } // FIELD: factionId private String factionId; @@ -55,6 +59,8 @@ public class FPlayer extends PlayerEntity implements EconomyParticipator // FIELD: title private String title; + public String getTitle() { return this.title; } + public void setTitle(String title) { this.title = title; } // FIELD: power private double power; @@ -65,19 +71,23 @@ public class FPlayer extends PlayerEntity implements EconomyParticipator // FIELD: lastLoginTime private long lastLoginTime; + + + + + + + + // FIELD: mapAutoUpdating private transient boolean mapAutoUpdating; + public void setMapAutoUpdating(boolean mapAutoUpdating) { this.mapAutoUpdating = mapAutoUpdating; } + public boolean isMapAutoUpdating() { return mapAutoUpdating; } // FIELD: autoClaimEnabled private transient Faction autoClaimFor; - public Faction getAutoClaimFor() - { - return autoClaimFor; - } - public void setAutoClaimFor(Faction faction) - { - this.autoClaimFor = faction; - } + public Faction getAutoClaimFor() { return autoClaimFor; } + public void setAutoClaimFor(Faction faction) { this.autoClaimFor = faction; } private transient boolean isAdminBypassing = false; public boolean isAdminBypassing() { return this.isAdminBypassing; } @@ -87,7 +97,9 @@ public class FPlayer extends PlayerEntity implements EconomyParticipator private transient boolean loginPvpDisabled; // FIELD: deleteMe + // TODO: This is not the way it is meant to be used... Check out the selective saving and improve it private transient boolean deleteMe; + public void markForDeletion(boolean delete) { deleteMe = delete; } // FIELD: chatMode private ChatMode chatMode; @@ -153,16 +165,11 @@ public class FPlayer extends PlayerEntity implements EconomyParticipator // Getters And Setters // -------------------------------------------- // - - - public long getLastLoginTime() { return lastLoginTime; } - - public void setLastLoginTime(long lastLoginTime) { losePowerFromBeingOffline(); @@ -174,16 +181,6 @@ public class FPlayer extends PlayerEntity implements EconomyParticipator } } - public boolean isMapAutoUpdating() - { - return mapAutoUpdating; - } - - public void setMapAutoUpdating(boolean mapAutoUpdating) - { - this.mapAutoUpdating = mapAutoUpdating; - } - public boolean hasLoginPvpDisabled() { if (!loginPvpDisabled) @@ -198,40 +195,17 @@ public class FPlayer extends PlayerEntity implements EconomyParticipator return true; } - public FLocation getLastStoodAt() - { - return this.lastStoodAt; - } - - public void setLastStoodAt(FLocation flocation) - { - this.lastStoodAt = flocation; - } - - public void markForDeletion(boolean delete) - { - deleteMe = delete; - } - //----------------------------------------------// // Title, Name, Faction Tag and Chat //----------------------------------------------// // Base: - public String getTitle() - { - return this.title; - } - public void setTitle(String title) - { - this.title = title; - } public String getName() { - return this.getId(); // TODO: ... display name or remove completeley + return getId(); // TODO: ... display name or remove completeley } public String getTag() @@ -277,35 +251,6 @@ public class FPlayer extends PlayerEntity implements EconomyParticipator return this.getColorTo(fplayer)+this.getNameAndTitle(); } - /*public String getNameAndTag(Faction faction) - { - return this.getRelationColor(faction)+this.getNameAndTag(); - } - public String getNameAndTag(FPlayer fplayer) - { - return this.getRelationColor(fplayer)+this.getNameAndTag(); - }*/ - - // TODO: REmovded for refactoring. - - /*public String getNameAndRelevant(Faction faction) - { - // Which relation? - Relation rel = this.getRelationTo(faction); - - // For member we show title - if (rel == Relation.MEMBER) { - return rel.getColor() + this.getNameAndTitle(); - } - - // For non members we show tag - return rel.getColor() + this.getNameAndTag(); - } - public String getNameAndRelevant(FPlayer fplayer) - { - return getNameAndRelevant(fplayer.getFaction()); - }*/ - // Chat Tag: // These are injected into the format of global chat messages. @@ -493,15 +438,15 @@ public class FPlayer extends PlayerEntity implements EconomyParticipator return factionHere != null && factionHere.isNormal() && factionHere != this.getFaction(); }*/ - public boolean isInAllyTerritory() + /*public boolean isInAllyTerritory() { return Board.getFactionAt(new FLocation(this)).getRelationTo(this) == Rel.ALLY; - } + }*/ - public boolean isInNeutralTerritory() + /*public boolean isInNeutralTerritory() { return Board.getFactionAt(new FLocation(this)).getRelationTo(this) == Rel.NEUTRAL; - } + }*/ public boolean isInEnemyTerritory() { diff --git a/src/com/massivecraft/factions/Faction.java b/src/com/massivecraft/factions/Faction.java index f4e669a5..e29a48c8 100644 --- a/src/com/massivecraft/factions/Faction.java +++ b/src/com/massivecraft/factions/Faction.java @@ -25,9 +25,9 @@ public class Faction extends Entity implements EconomyParticipator // FIELD: invites // Where string is a lowercase player name private Set invites; - public void invite(FPlayer fplayer) { this.invites.add(fplayer.getName().toLowerCase()); } - public void deinvite(FPlayer fplayer) { this.invites.remove(fplayer.getName().toLowerCase()); } - public boolean isInvited(FPlayer fplayer) { return this.invites.contains(fplayer.getName().toLowerCase()); } + public void invite(FPlayer fplayer) { this.invites.add(fplayer.getId().toLowerCase()); } + public void deinvite(FPlayer fplayer) { this.invites.remove(fplayer.getId().toLowerCase()); } + public boolean isInvited(FPlayer fplayer) { return this.invites.contains(fplayer.getId().toLowerCase()); } // FIELD: open private boolean open; @@ -84,9 +84,6 @@ public class Faction extends Entity implements EconomyParticipator this.home = null; } - // FIELD: lastPlayerLoggedOffTime - private transient long lastPlayerLoggedOffTime; - // FIELD: account (fake field) // Bank functions public double money; @@ -161,9 +158,6 @@ public class Faction extends Entity implements EconomyParticipator this.open = Conf.newFactionsDefaultOpen; this.tag = "???"; this.description = "Default faction description :("; - this.lastPlayerLoggedOffTime = 0; - //this.peaceful = false; - //this.peacefulExplosionsEnabled = false; this.money = 0.0; this.flagOverrides = new LinkedHashMap(); this.permOverrides = new LinkedHashMap>(); @@ -242,6 +236,7 @@ public class Faction extends Entity implements EconomyParticipator } } + // TODO: Implement a has enough feature. //----------------------------------------------// // Power //----------------------------------------------// @@ -390,34 +385,6 @@ public class Faction extends Entity implements EconomyParticipator return ret; } - // slightly faster check than getOnlinePlayers() if you just want to see if there are any players online - public boolean hasPlayersOnline() - { - // only real factions can have players online, not safe zone / war zone - //if (this.isPlayerFreeType()) return false; - - for (Player player: P.p.getServer().getOnlinePlayers()) - { - FPlayer fplayer = FPlayers.i.get(player); - if (fplayer.getFaction() == this) - { - return true; - } - } - - // even if all players are technically logged off, maybe someone was on recently enough to not consider them officially offline yet - if (Conf.considerFactionsReallyOfflineAfterXMinutes > 0 && System.currentTimeMillis() < lastPlayerLoggedOffTime + (Conf.considerFactionsReallyOfflineAfterXMinutes * 60000)) - { - return true; - } - return false; - } - - public void memberLoggedOff() - { - lastPlayerLoggedOffTime = System.currentTimeMillis(); - } - //----------------------------------------------// // Messages //----------------------------------------------// diff --git a/src/com/massivecraft/factions/P.java b/src/com/massivecraft/factions/P.java index 71aefc3d..7b1bd9e6 100644 --- a/src/com/massivecraft/factions/P.java +++ b/src/com/massivecraft/factions/P.java @@ -243,9 +243,6 @@ public class P extends MPlugin } // Is this chat message actually a Factions command, and thus should be left alone by other plugins? - - // TODO: GET THIS BACK AND WORKING - public boolean isFactionsCommand(String check) { if (check == null || check.isEmpty()) return false; diff --git a/src/com/massivecraft/factions/listeners/FactionsEntityListener.java b/src/com/massivecraft/factions/listeners/FactionsEntityListener.java index 6d6cfdba..2a29a028 100644 --- a/src/com/massivecraft/factions/listeners/FactionsEntityListener.java +++ b/src/com/massivecraft/factions/listeners/FactionsEntityListener.java @@ -108,20 +108,7 @@ public class FactionsEntityListener extends EntityListener return; } } -/* - public boolean isPlayerInSafeZone(Entity damagee) - { - if ( ! (damagee instanceof Player)) - { - return false; - } - if (Board.getFactionAt(new FLocation(damagee.getLocation())).isSafeZone()) - { - return true; - } - return false; - } -*/ + public boolean canDamagerHurtDamagee(EntityDamageByEntityEvent sub) { Entity damager = sub.getDamager(); @@ -356,50 +343,4 @@ public class FactionsEntityListener extends EntityListener event.setCancelled(true); } - - /*private boolean stopEndermanBlockManipulation(Location loc) - { - if (loc == null) - { - return false; - } - // quick check to see if all Enderman deny options are enabled; if so, no need to check location - if - ( - Conf.wildernessDenyEndermanBlocks - && - Conf.territoryDenyEndermanBlocks - && - Conf.territoryDenyEndermanBlocksWhenOffline - && - Conf.safeZoneDenyEndermanBlocks - && - Conf.warZoneDenyEndermanBlocks - ) - { - return true; - } - - FLocation fLoc = new FLocation(loc); - Faction claimFaction = Board.getFactionAt(fLoc); - - if (claimFaction.isNone()) - { - return Conf.wildernessDenyEndermanBlocks; - } - else if (claimFaction.isNormal()) - { - return claimFaction.hasPlayersOnline() ? Conf.territoryDenyEndermanBlocks : Conf.territoryDenyEndermanBlocksWhenOffline; - } - else if (claimFaction.isSafeZone()) - { - return Conf.safeZoneDenyEndermanBlocks; - } - else if (claimFaction.isWarZone()) - { - return Conf.warZoneDenyEndermanBlocks; - } - - return false; - }*/ } diff --git a/src/com/massivecraft/factions/listeners/FactionsPlayerListener.java b/src/com/massivecraft/factions/listeners/FactionsPlayerListener.java index 9383b26a..01e7c5d1 100644 --- a/src/com/massivecraft/factions/listeners/FactionsPlayerListener.java +++ b/src/com/massivecraft/factions/listeners/FactionsPlayerListener.java @@ -162,11 +162,6 @@ public class FactionsPlayerListener extends PlayerListener // Make sure player's power is up to date when they log off. FPlayer me = FPlayers.i.get(event.getPlayer()); me.getPower(); - Faction myFaction = me.getFaction(); - if (myFaction != null) - { - myFaction.memberLoggedOff(); - } SpoutFeatures.playerDisconnect(me); } @@ -176,14 +171,14 @@ public class FactionsPlayerListener extends PlayerListener Player player = event.getPlayer(); FPlayer me = FPlayers.i.get(player); + // Did we change block? + if (event.getFrom().equals(event.getTo())) return; + // Did we change coord? FLocation from = me.getLastStoodAt(); FLocation to = new FLocation(player.getLocation()); - if (from.equals(to)) - { - return; - } + if (from.equals(to)) return; // Yes we did change coord (: diff --git a/src/com/massivecraft/factions/struct/FFlag.java b/src/com/massivecraft/factions/struct/FFlag.java index 19f7777a..17213aab 100644 --- a/src/com/massivecraft/factions/struct/FFlag.java +++ b/src/com/massivecraft/factions/struct/FFlag.java @@ -18,6 +18,7 @@ public enum FFlag // This faction has infinite power: TODO: Add faction has enough method. Replace the permanentpower level // (Faction) Territory flags + // If a faction later could have many different territories this would probably be in another enum POWERLOSS("powerloss", "Is power lost on death in this territory?", true, false), PVP("pvp", "Can you PVP in territory?", true, false), FRIENDLYFIRE("friendlyfire", "Can friends hurt eachother here?", false, false), diff --git a/src/com/massivecraft/factions/struct/Permission.java b/src/com/massivecraft/factions/struct/Permission.java index 4bae855a..a346e26f 100644 --- a/src/com/massivecraft/factions/struct/Permission.java +++ b/src/com/massivecraft/factions/struct/Permission.java @@ -6,7 +6,6 @@ import com.massivecraft.factions.P; public enum Permission { - OWNERSHIP_BYPASS("ownershipbypass"), LEADER("leader"), AUTOCLAIM("autoclaim"), BYPASS("bypass"), @@ -41,10 +40,7 @@ public enum Permission MONEY_F2F("money.f2f"), MONEY_F2P("money.f2p"), MONEY_P2F("money.p2f"), - NO_BOOM("noboom"), OPEN("open"), - OWNER("owner"), - OWNERLIST("ownerlist"), SET_PEACEFUL("setpeaceful"), POWER("power"), POWER_ANY("power.any"),