diff --git a/src/main/java/com/massivecraft/factions/cmd/CmdFactionsFaction.java b/src/main/java/com/massivecraft/factions/cmd/CmdFactionsFaction.java index 81cac203..ac0b35f8 100644 --- a/src/main/java/com/massivecraft/factions/cmd/CmdFactionsFaction.java +++ b/src/main/java/com/massivecraft/factions/cmd/CmdFactionsFaction.java @@ -2,12 +2,17 @@ package com.massivecraft.factions.cmd; import java.util.TreeSet; +import org.bukkit.Bukkit; +import org.bukkit.command.CommandSender; + import com.massivecraft.factions.cmd.arg.ARFaction; import com.massivecraft.factions.entity.Faction; -import com.massivecraft.factions.event.EventFactionsFactionShow; +import com.massivecraft.factions.event.EventFactionsFactionShowAsync; +import com.massivecraft.factions.Factions; import com.massivecraft.factions.Perm; import com.massivecraft.massivecore.PriorityLines; import com.massivecraft.massivecore.cmd.req.ReqHasPerm; +import com.massivecraft.massivecore.mixin.Mixin; import com.massivecraft.massivecore.util.Txt; public class CmdFactionsFaction extends FactionsCommand @@ -36,23 +41,33 @@ public class CmdFactionsFaction extends FactionsCommand public void perform() { // Args - Faction faction = this.arg(0, ARFaction.get(), msenderFaction); + final Faction faction = this.arg(0, ARFaction.get(), msenderFaction); if (faction == null) return; - // Event - EventFactionsFactionShow event = new EventFactionsFactionShow(sender, faction); - event.run(); - if (event.isCancelled()) return; + final CommandSender sender = this.sender; - // Title - msg(Txt.titleize("Faction " + faction.getName(msender))); - - // Lines - TreeSet priorityLiness = new TreeSet(event.getIdPriorityLiness().values()); - for (PriorityLines priorityLines : priorityLiness) + Bukkit.getScheduler().runTaskAsynchronously(Factions.get(), new Runnable() { - sendMessage(priorityLines.getLines()); - } + @Override + public void run() + { + // Event + EventFactionsFactionShowAsync event = new EventFactionsFactionShowAsync(sender, faction); + event.run(); + if (event.isCancelled()) return; + + // Title + Mixin.messageOne(sender, Txt.titleize("Faction " + faction.getName(msender))); + + // Lines + TreeSet priorityLiness = new TreeSet(event.getIdPriorityLiness().values()); + for (PriorityLines priorityLines : priorityLiness) + { + Mixin.messageOne(sender, priorityLines.getLines()); + } + } + }); + } } diff --git a/src/main/java/com/massivecraft/factions/engine/EngineMain.java b/src/main/java/com/massivecraft/factions/engine/EngineMain.java index ecc4ba28..0c075b13 100644 --- a/src/main/java/com/massivecraft/factions/engine/EngineMain.java +++ b/src/main/java/com/massivecraft/factions/engine/EngineMain.java @@ -79,7 +79,7 @@ import com.massivecraft.factions.entity.MConf; import com.massivecraft.factions.entity.MPlayerColl; import com.massivecraft.factions.event.EventFactionsChunkChangeType; import com.massivecraft.factions.event.EventFactionsChunksChange; -import com.massivecraft.factions.event.EventFactionsFactionShow; +import com.massivecraft.factions.event.EventFactionsFactionShowAsync; import com.massivecraft.factions.event.EventFactionsPvpDisallowed; import com.massivecraft.factions.event.EventFactionsPowerChange; import com.massivecraft.factions.event.EventFactionsPowerChange.PowerChangeReason; @@ -122,7 +122,7 @@ public class EngineMain extends EngineAbstract // -------------------------------------------- // @EventHandler(priority = EventPriority.LOW, ignoreCancelled = true) - public void onFactionShow(EventFactionsFactionShow event) + public void onFactionShow(EventFactionsFactionShowAsync event) { final int tableCols = 4; final CommandSender sender = event.getSender(); diff --git a/src/main/java/com/massivecraft/factions/event/EventFactionsAbstractSender.java b/src/main/java/com/massivecraft/factions/event/EventFactionsAbstractSender.java index 532b864c..d2fe9d4b 100644 --- a/src/main/java/com/massivecraft/factions/event/EventFactionsAbstractSender.java +++ b/src/main/java/com/massivecraft/factions/event/EventFactionsAbstractSender.java @@ -23,4 +23,10 @@ public abstract class EventFactionsAbstractSender extends EventMassiveCore { this.sender = sender; } + + public EventFactionsAbstractSender(boolean async, CommandSender sender) + { + super(async); + this.sender = sender; + } } diff --git a/src/main/java/com/massivecraft/factions/event/EventFactionsFactionShow.java b/src/main/java/com/massivecraft/factions/event/EventFactionsFactionShowAsync.java similarity index 84% rename from src/main/java/com/massivecraft/factions/event/EventFactionsFactionShow.java rename to src/main/java/com/massivecraft/factions/event/EventFactionsFactionShowAsync.java index dd275a1a..b73f1e6c 100644 --- a/src/main/java/com/massivecraft/factions/event/EventFactionsFactionShow.java +++ b/src/main/java/com/massivecraft/factions/event/EventFactionsFactionShowAsync.java @@ -9,7 +9,7 @@ import org.bukkit.event.HandlerList; import com.massivecraft.factions.entity.Faction; import com.massivecraft.massivecore.PriorityLines; -public class EventFactionsFactionShow extends EventFactionsAbstractSender +public class EventFactionsFactionShowAsync extends EventFactionsAbstractSender { // -------------------------------------------- // // REQUIRED EVENT CODE @@ -33,9 +33,9 @@ public class EventFactionsFactionShow extends EventFactionsAbstractSender // CONSTRUCT // -------------------------------------------- // - public EventFactionsFactionShow(CommandSender sender, Faction faction) + public EventFactionsFactionShowAsync(CommandSender sender, Faction faction) { - super(sender); + super(true, sender); this.faction = faction; this.idPriorityLiness = new HashMap(); }