package com.massivecraft.factions.cmd; import com.massivecraft.factions.Perm; import com.massivecraft.factions.cmd.type.TypeFaction; import com.massivecraft.factions.entity.Faction; import com.massivecraft.factions.entity.MPerm; import com.massivecraft.factions.event.EventFactionsHomeChange; import com.massivecraft.massivecore.MassiveException; import com.massivecraft.massivecore.command.requirement.RequirementHasPerm; import com.massivecraft.massivecore.command.requirement.RequirementIsPlayer; import com.massivecraft.massivecore.ps.PS; public class CmdFactionsSethome extends FactionsCommandHome { // -------------------------------------------- // // CONSTRUCT // -------------------------------------------- // public CmdFactionsSethome() { // Parameters this.addParameter(TypeFaction.get(), "faction", "you"); // Requirements this.addRequirements(RequirementHasPerm.get(Perm.SETHOME)); this.addRequirements(RequirementIsPlayer.get()); } // -------------------------------------------- // // OVERRIDE // -------------------------------------------- // @Override public void perform() throws MassiveException { // Args Faction faction = this.readArg(msenderFaction); PS newHome = PS.valueOf(me.getLocation()); // MPerm if ( ! MPerm.getPermSethome().has(msender, faction, true)) return; // Verify if (!msender.isOverriding() && !faction.isValidHome(newHome)) { msender.msg("Sorry, your faction home can only be set inside your own claimed territory."); return; } // Event EventFactionsHomeChange event = new EventFactionsHomeChange(sender, faction, newHome); event.run(); if (event.isCancelled()) return; newHome = event.getNewHome(); // Apply faction.setHome(newHome); // Inform faction.msg("%s set the home for your faction. You can now use:", msender.describeTo(msenderFaction, true)); faction.sendMessage(CmdFactions.get().cmdFactionsHome.getTemplate()); if (faction != msenderFaction) { msender.msg("You have set the home for " + faction.getName(msender) + "."); } } }