diff --git a/plugin.yml b/plugin.yml index 2fefe410..a8b543eb 100644 --- a/plugin.yml +++ b/plugin.yml @@ -1,3 +1,3 @@ name: Factions -version: 1.0 beta4 +version: 1.0 beta5 main: com.bukkit.mcteam.factions.Factions \ No newline at end of file diff --git a/releases/factions 1.0beta4.zip b/releases/factions 1.0beta4.zip new file mode 100644 index 00000000..406b6896 Binary files /dev/null and b/releases/factions 1.0beta4.zip differ diff --git a/src/com/bukkit/mcteam/factions/Commands.java b/src/com/bukkit/mcteam/factions/Commands.java index 74e992c4..227ecb53 100644 --- a/src/com/bukkit/mcteam/factions/Commands.java +++ b/src/com/bukkit/mcteam/factions/Commands.java @@ -775,7 +775,7 @@ public class Commands { } public static void version(Follower me) { - me.sendMessage(Conf.colorSystem+"You are running "+Factions.desc.getFullName()); + me.sendMessage(Conf.colorSystem+"You are running "+Factions.factions.getDescription().getFullName()); } } diff --git a/src/com/bukkit/mcteam/factions/Factions.java b/src/com/bukkit/mcteam/factions/Factions.java index 58fd812d..36da5f32 100644 --- a/src/com/bukkit/mcteam/factions/Factions.java +++ b/src/com/bukkit/mcteam/factions/Factions.java @@ -1,11 +1,6 @@ package com.bukkit.mcteam.factions; -import java.io.File; - -import org.bukkit.Server; import org.bukkit.event.Event; -import org.bukkit.plugin.PluginDescriptionFile; -import org.bukkit.plugin.PluginLoader; import org.bukkit.plugin.PluginManager; import org.bukkit.plugin.java.JavaPlugin; @@ -16,50 +11,11 @@ import com.bukkit.mcteam.factions.listeners.FactionsPlayerListener; import com.bukkit.mcteam.factions.util.Log; public class Factions extends JavaPlugin { - public static PluginLoader pluginLoader; - public static Server server; - public static PluginDescriptionFile desc; - public static File folder; - public static File plugin; - public static ClassLoader cLoader; + public static Factions factions; private final FactionsPlayerListener playerListener = new FactionsPlayerListener(this); private final FactionsEntityListener entityListener = new FactionsEntityListener(this); private final FactionsBlockListener blockListener = new FactionsBlockListener(this); - - public Factions(PluginLoader pluginLoader, Server instance, PluginDescriptionFile desc, File folder, File plugin, ClassLoader cLoader) { - super(pluginLoader, instance, desc, folder, plugin, cLoader); - - Factions.pluginLoader = pluginLoader; - Factions.server = instance; - Factions.desc = desc; - Factions.folder = folder; - Factions.plugin = plugin; - Factions.cLoader = cLoader; - - Log.info("=== INIT START ==="); - long timeInitStart = System.currentTimeMillis(); - Log.info("You are running version: "+desc.getVersion()); - - EM.loadAll(); - - // Register events - PluginManager pm = instance.getPluginManager(); - pm.registerEvent(Event.Type.PLAYER_CHAT, this.playerListener, Event.Priority.Highest, this); - pm.registerEvent(Event.Type.PLAYER_COMMAND, this.playerListener, Event.Priority.Normal, this); - pm.registerEvent(Event.Type.PLAYER_JOIN, this.playerListener, Event.Priority.Normal, this); - pm.registerEvent(Event.Type.PLAYER_MOVE, this.playerListener, Event.Priority.Normal, this); - pm.registerEvent(Event.Type.PLAYER_QUIT, this.playerListener, Event.Priority.Normal, this); - pm.registerEvent(Event.Type.ENTITY_DEATH, this.entityListener, Event.Priority.Normal, this); - pm.registerEvent(Event.Type.ENTITY_DAMAGEDBY_ENTITY, this.entityListener, Event.Priority.Normal, this); - pm.registerEvent(Event.Type.ENTITY_DAMAGEDBY_PROJECTILE, this.entityListener, Event.Priority.Normal, this); - pm.registerEvent(Event.Type.BLOCK_DAMAGED, this.blockListener, Event.Priority.Normal, this); - pm.registerEvent(Event.Type.BLOCK_PLACED, this.blockListener, Event.Priority.Normal, this); - pm.registerEvent(Event.Type.BLOCK_INTERACT, this.blockListener, Event.Priority.Normal, this); - - Log.info("=== INIT DONE (Took "+(System.currentTimeMillis()-timeInitStart)+"ms) ==="); - Log.threshold = Conf.logThreshold; - } @Override public void onDisable() { @@ -69,8 +25,29 @@ public class Factions extends JavaPlugin { @Override public void onEnable() { - // TODO Auto-generated method stub + Factions.factions = this; + Log.info("=== INIT START ==="); + long timeInitStart = System.currentTimeMillis(); + Log.info("You are running version: "+this.getDescription().getVersion()); + + EM.loadAll(); + + // Register events + PluginManager pm = this.getServer().getPluginManager(); + pm.registerEvent(Event.Type.PLAYER_CHAT, this.playerListener, Event.Priority.Highest, this); + pm.registerEvent(Event.Type.PLAYER_COMMAND, this.playerListener, Event.Priority.Normal, this); + pm.registerEvent(Event.Type.PLAYER_JOIN, this.playerListener, Event.Priority.Normal, this); + pm.registerEvent(Event.Type.PLAYER_MOVE, this.playerListener, Event.Priority.Normal, this); + pm.registerEvent(Event.Type.PLAYER_QUIT, this.playerListener, Event.Priority.Normal, this); + pm.registerEvent(Event.Type.ENTITY_DEATH, this.entityListener, Event.Priority.Normal, this); + pm.registerEvent(Event.Type.ENTITY_DAMAGED, this.entityListener, Event.Priority.Normal, this); + pm.registerEvent(Event.Type.BLOCK_DAMAGED, this.blockListener, Event.Priority.Normal, this); + pm.registerEvent(Event.Type.BLOCK_PLACED, this.blockListener, Event.Priority.Normal, this); + pm.registerEvent(Event.Type.BLOCK_INTERACT, this.blockListener, Event.Priority.Normal, this); + + Log.info("=== INIT DONE (Took "+(System.currentTimeMillis()-timeInitStart)+"ms) ==="); + Log.threshold = Conf.logThreshold; } } diff --git a/src/com/bukkit/mcteam/factions/entities/EM.java b/src/com/bukkit/mcteam/factions/entities/EM.java index e643ff75..7caabfb5 100644 --- a/src/com/bukkit/mcteam/factions/entities/EM.java +++ b/src/com/bukkit/mcteam/factions/entities/EM.java @@ -25,7 +25,7 @@ public class EM { // hardcoded config protected final static String ext = ".json"; - protected final static File folderBase = Factions.folder; + protected final static File folderBase = Factions.factions.getDataFolder(); protected final static File folderFaction = new File(folderBase, "faction"); protected final static File folderFollower = new File(folderBase, "follower"); protected final static File folderBoard = new File(folderBase, "board"); diff --git a/src/com/bukkit/mcteam/factions/entities/Faction.java b/src/com/bukkit/mcteam/factions/entities/Faction.java index 5263c7f2..f943263e 100644 --- a/src/com/bukkit/mcteam/factions/entities/Faction.java +++ b/src/com/bukkit/mcteam/factions/entities/Faction.java @@ -202,7 +202,7 @@ public class Faction { public ArrayList getOnlinePlayers() { ArrayList ret = new ArrayList(); - for (Player player: Factions.server.getOnlinePlayers()) { + for (Player player: Factions.factions.getServer().getOnlinePlayers()) { Follower follower = Follower.get(player); if (follower.factionId == this.id) { ret.add(player); diff --git a/src/com/bukkit/mcteam/factions/entities/Follower.java b/src/com/bukkit/mcteam/factions/entities/Follower.java index 07bf797e..be20d975 100644 --- a/src/com/bukkit/mcteam/factions/entities/Follower.java +++ b/src/com/bukkit/mcteam/factions/entities/Follower.java @@ -11,6 +11,7 @@ import com.bukkit.mcteam.util.ChatFixUtil; public class Follower { public transient String id; // The is the name of the player + public transient Coord lastStoodInCoord = new Coord(); // Where did this player stand the last time we checked? public int factionId; public Role role; @@ -46,7 +47,7 @@ public class Follower { } public Player getPlayer() { - return Factions.server.getPlayer(this.getName()); + return Factions.factions.getServer().getPlayer(this.getName()); } public boolean isOnline() { diff --git a/src/com/bukkit/mcteam/factions/listeners/FactionsEntityListener.java b/src/com/bukkit/mcteam/factions/listeners/FactionsEntityListener.java index 5ef5818f..8ff28041 100644 --- a/src/com/bukkit/mcteam/factions/listeners/FactionsEntityListener.java +++ b/src/com/bukkit/mcteam/factions/listeners/FactionsEntityListener.java @@ -7,6 +7,7 @@ import org.bukkit.entity.Entity; import org.bukkit.entity.Player; import org.bukkit.event.entity.EntityDamageByEntityEvent; import org.bukkit.event.entity.EntityDamageByProjectileEvent; +import org.bukkit.event.entity.EntityDamageEvent; import org.bukkit.event.entity.EntityDeathEvent; import org.bukkit.event.entity.EntityListener; @@ -33,6 +34,7 @@ public class FactionsEntityListener extends EntityListener { follower.onDeath(); follower.sendMessage(Conf.colorSystem+"Your power is now "+follower.getPowerRounded()+" / "+follower.getPowerMaxRounded()); } + /** * Who can I hurt? * I can never hurt members or allies. @@ -40,30 +42,22 @@ public class FactionsEntityListener extends EntityListener { * I can hurt neutrals as long as they are outside their own territory. */ @Override - public void onEntityDamageByEntity(EntityDamageByEntityEvent event) { + public void onEntityDamage(EntityDamageEvent event) { if ( event.isCancelled()) { return; // Some other plugin decided. Alright then. } - if ( ! this.canDamagerHurtDamagee(event.getDamager(), event.getEntity(), event.getDamage())) { - event.setCancelled(true); - } - } - - @Override - public void onEntityDamageByProjectile(EntityDamageByProjectileEvent event) { - //DamageCause dc = event.getCause(); - //Log.debug("dc.toString(): "+dc.toString()); - //Log.debug("event.getDamager().getClass(): "+event.getDamager().getClass()); - //Log.debug("event.getEntity().getClass(): "+event.getEntity().getClass()); - - if ( event.isCancelled()) { - return; // Some other plugin decided. Alright then. - } - - if ( ! this.canDamagerHurtDamagee(event.getDamager(), event.getEntity(), event.getDamage())) { - event.setCancelled(true); - } + if (event instanceof EntityDamageByEntityEvent) { + EntityDamageByEntityEvent sub = (EntityDamageByEntityEvent)event; + if ( ! this.canDamagerHurtDamagee(sub.getDamager(), sub.getEntity(), sub.getDamage())) { + event.setCancelled(true); + } + } else if (event instanceof EntityDamageByProjectileEvent) { + EntityDamageByProjectileEvent sub = (EntityDamageByProjectileEvent)event; + if ( ! this.canDamagerHurtDamagee(sub.getDamager(), sub.getEntity(), sub.getDamage())) { + event.setCancelled(true); + } + } } public boolean canDamagerHurtDamagee(Entity damager, Entity damagee, int damage) { diff --git a/src/com/bukkit/mcteam/factions/listeners/FactionsPlayerListener.java b/src/com/bukkit/mcteam/factions/listeners/FactionsPlayerListener.java index d9e3e706..53c30eca 100644 --- a/src/com/bukkit/mcteam/factions/listeners/FactionsPlayerListener.java +++ b/src/com/bukkit/mcteam/factions/listeners/FactionsPlayerListener.java @@ -3,7 +3,6 @@ package com.bukkit.mcteam.factions.listeners; import java.util.*; import java.util.logging.Logger; -import org.bukkit.Location; import org.bukkit.entity.*; import org.bukkit.event.player.PlayerChatEvent; import org.bukkit.event.player.PlayerEvent; @@ -82,7 +81,7 @@ public class FactionsPlayerListener extends PlayerListener{ // Why? Because the relations will differ. event.setCancelled(true); - for (Player listeningPlayer : Factions.server.getOnlinePlayers()) { + for (Player listeningPlayer : Factions.factions.getServer().getOnlinePlayers()) { Follower you = Follower.get(listeningPlayer); String yourFormat = formatStart + me.getChatTag(you) + formatEnd; listeningPlayer.sendMessage(String.format(yourFormat, talkingPlayer.getDisplayName(), msg)); @@ -122,17 +121,17 @@ public class FactionsPlayerListener extends PlayerListener{ @Override public void onPlayerMove(PlayerMoveEvent event) { + Follower me = Follower.get(event.getPlayer()); + // Did we change coord? - Location from = event.getFrom(); - Location to = event.getTo(); - Coord coordFrom = Coord.from(from); - Coord coordTo = Coord.from(to); + Coord coordFrom = me.lastStoodInCoord; + Coord coordTo = Coord.from(event.getTo()); if (coordFrom.equals(coordTo)) { return; } // Yes we did change coord (: - Follower me = Follower.get(event.getPlayer()); + me.lastStoodInCoord = coordTo; Board board = Board.get(event.getPlayer().getWorld()); if (me.isMapAutoUpdating()) { diff --git a/src/com/bukkit/mcteam/factions/util/Log.java b/src/com/bukkit/mcteam/factions/util/Log.java index 95a43bc7..9517e638 100644 --- a/src/com/bukkit/mcteam/factions/util/Log.java +++ b/src/com/bukkit/mcteam/factions/util/Log.java @@ -7,7 +7,7 @@ import org.bukkit.entity.Player; import com.bukkit.mcteam.factions.Factions; public class Log { - public static String prefix = Factions.desc.getName(); + public static String prefix = Factions.factions.getDescription().getName(); public static ArrayList debuggers = new ArrayList(); public static int threshold = 10;