package admincommands; import java.util.Collections; import com.aionemu.gameserver.model.gameobjects.player.Player; import com.aionemu.gameserver.model.gameobjects.state.CreatureVisualState; import com.aionemu.gameserver.network.aion.serverpackets.SM_ABNORMAL_STATE; import com.aionemu.gameserver.network.aion.serverpackets.SM_PLAYER_STATE; import com.aionemu.gameserver.network.aion.serverpackets.SM_SYSTEM_MESSAGE; import com.aionemu.gameserver.skillengine.effect.AbnormalState; import com.aionemu.gameserver.utils.PacketSendUtility; import com.aionemu.gameserver.utils.chathandlers.AdminCommand; /** * @author Divinity, Neon */ public class Invis extends AdminCommand { public Invis() { super("invis", "Sets/unsets advanced invisibility."); } @Override public void execute(Player player, String... params) { if (!player.isInVisualState(CreatureVisualState.HIDE20)) { player.getEffectController().setAbnormal(AbnormalState.HIDE); player.setVisualState(CreatureVisualState.HIDE20); player.getController().onHide(); PacketSendUtility.sendPacket(player, SM_SYSTEM_MESSAGE.STR_SKILL_EFFECT_INVISIBLE_BEGIN()); } else { player.getEffectController().unsetAbnormal(AbnormalState.HIDE); player.unsetVisualState(CreatureVisualState.HIDE20); player.getController().onHideEnd(); PacketSendUtility.sendPacket(player, SM_SYSTEM_MESSAGE.STR_SKILL_EFFECT_INVISIBLE_END()); } PacketSendUtility.broadcastPacket(player, new SM_PLAYER_STATE(player), true); // required because without a skill this isn't sent automatically (outdated abnormals can cause issues when opening a private store for example) PacketSendUtility.sendPacket(player, new SM_ABNORMAL_STATE(Collections.emptyList(), player.getEffectController().getAbnormals(), 0)); } }