Fixed restoring experience gain prohibition.
This commit is contained in:
		@@ -17,12 +17,7 @@
 | 
			
		||||
package handlers.usercommandhandlers;
 | 
			
		||||
 | 
			
		||||
import org.l2jmobius.gameserver.handler.IVoicedCommandHandler;
 | 
			
		||||
import org.l2jmobius.gameserver.model.actor.Playable;
 | 
			
		||||
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
 | 
			
		||||
import org.l2jmobius.gameserver.model.events.EventType;
 | 
			
		||||
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayableExpChanged;
 | 
			
		||||
import org.l2jmobius.gameserver.model.events.listeners.FunctionEventListener;
 | 
			
		||||
import org.l2jmobius.gameserver.model.events.returns.TerminateReturn;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @author xban1x
 | 
			
		||||
@@ -42,7 +37,7 @@ public class ExperienceGain implements IVoicedCommandHandler
 | 
			
		||||
		{
 | 
			
		||||
			if (!player.getVariables().getBoolean("EXPOFF", false))
 | 
			
		||||
			{
 | 
			
		||||
				player.addListener(new FunctionEventListener(player, EventType.ON_PLAYABLE_EXP_CHANGED, (OnPlayableExpChanged event) -> onExperienceReceived(event.getPlayable()), this));
 | 
			
		||||
				player.disableExpGain();
 | 
			
		||||
				player.getVariables().set("EXPOFF", true);
 | 
			
		||||
				player.sendMessage("Experience gain is disabled.");
 | 
			
		||||
			}
 | 
			
		||||
@@ -51,7 +46,7 @@ public class ExperienceGain implements IVoicedCommandHandler
 | 
			
		||||
		{
 | 
			
		||||
			if (player.getVariables().getBoolean("EXPOFF", false))
 | 
			
		||||
			{
 | 
			
		||||
				player.removeListenerIf(EventType.ON_PLAYABLE_EXP_CHANGED, listener -> listener.getOwner() == this);
 | 
			
		||||
				player.enableExpGain();
 | 
			
		||||
				player.getVariables().set("EXPOFF", false);
 | 
			
		||||
				player.sendMessage("Experience gain is enabled.");
 | 
			
		||||
			}
 | 
			
		||||
@@ -59,15 +54,6 @@ public class ExperienceGain implements IVoicedCommandHandler
 | 
			
		||||
		return true;
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	private TerminateReturn onExperienceReceived(Playable playable)
 | 
			
		||||
	{
 | 
			
		||||
		if (playable.isPlayer() && playable.getActingPlayer().isDead())
 | 
			
		||||
		{
 | 
			
		||||
			return new TerminateReturn(false, false, false);
 | 
			
		||||
		}
 | 
			
		||||
		return new TerminateReturn(true, true, true);
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	@Override
 | 
			
		||||
	public String[] getVoicedCommandList()
 | 
			
		||||
	{
 | 
			
		||||
 
 | 
			
		||||
@@ -198,6 +198,8 @@ import org.l2jmobius.gameserver.model.entity.Hero;
 | 
			
		||||
import org.l2jmobius.gameserver.model.entity.Siege;
 | 
			
		||||
import org.l2jmobius.gameserver.model.eventengine.AbstractEvent;
 | 
			
		||||
import org.l2jmobius.gameserver.model.events.EventDispatcher;
 | 
			
		||||
import org.l2jmobius.gameserver.model.events.EventType;
 | 
			
		||||
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayableExpChanged;
 | 
			
		||||
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerAbilityPointsChanged;
 | 
			
		||||
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerEquipItem;
 | 
			
		||||
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerFameChanged;
 | 
			
		||||
@@ -214,6 +216,8 @@ import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerPvPCha
 | 
			
		||||
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerPvPKill;
 | 
			
		||||
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerReputationChanged;
 | 
			
		||||
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSubChange;
 | 
			
		||||
import org.l2jmobius.gameserver.model.events.listeners.FunctionEventListener;
 | 
			
		||||
import org.l2jmobius.gameserver.model.events.returns.TerminateReturn;
 | 
			
		||||
import org.l2jmobius.gameserver.model.fishing.Fishing;
 | 
			
		||||
import org.l2jmobius.gameserver.model.holders.AttendanceInfoHolder;
 | 
			
		||||
import org.l2jmobius.gameserver.model.holders.ElementalSpiritDataHolder;
 | 
			
		||||
@@ -13464,6 +13468,25 @@ public class PlayerInstance extends Playable
 | 
			
		||||
		vars.storeMe();
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	private TerminateReturn onExperienceReceived()
 | 
			
		||||
	{
 | 
			
		||||
		if (isDead())
 | 
			
		||||
		{
 | 
			
		||||
			return new TerminateReturn(false, false, false);
 | 
			
		||||
		}
 | 
			
		||||
		return new TerminateReturn(true, true, true);
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	public void disableExpGain()
 | 
			
		||||
	{
 | 
			
		||||
		addListener(new FunctionEventListener(this, EventType.ON_PLAYABLE_EXP_CHANGED, (OnPlayableExpChanged event) -> onExperienceReceived(), this));
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	public void enableExpGain()
 | 
			
		||||
	{
 | 
			
		||||
		removeListenerIf(EventType.ON_PLAYABLE_EXP_CHANGED, listener -> listener.getOwner() == this);
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	/**
 | 
			
		||||
	 * Gets the last commission infos.
 | 
			
		||||
	 * @return the last commission infos
 | 
			
		||||
 
 | 
			
		||||
@@ -599,6 +599,13 @@ public class EnterWorld implements IClientIncomingPacket
 | 
			
		||||
			OfflineTradersTable.onTransaction(player, true, false);
 | 
			
		||||
		}
 | 
			
		||||
		
 | 
			
		||||
		// Check if expoff is enabled.
 | 
			
		||||
		if (player.getVariables().getBoolean("EXPOFF", false))
 | 
			
		||||
		{
 | 
			
		||||
			player.disableExpGain();
 | 
			
		||||
			player.sendMessage("Experience gain is disabled.");
 | 
			
		||||
		}
 | 
			
		||||
		
 | 
			
		||||
		player.broadcastUserInfo();
 | 
			
		||||
		
 | 
			
		||||
		if (BeautyShopData.getInstance().hasBeautyData(player.getRace(), player.getAppearance().getSexType()))
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user