Fixed restoring experience gain prohibition.

This commit is contained in:
MobiusDevelopment
2020-01-13 21:03:30 +00:00
parent fa2f3d7646
commit de47fedd21
51 changed files with 544 additions and 272 deletions
@@ -17,12 +17,7 @@
package handlers.usercommandhandlers; package handlers.usercommandhandlers;
import org.l2jmobius.gameserver.handler.IVoicedCommandHandler; 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.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 * @author xban1x
@@ -42,7 +37,7 @@ public class ExperienceGain implements IVoicedCommandHandler
{ {
if (!player.getVariables().getBoolean("EXPOFF", false)) 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.getVariables().set("EXPOFF", true);
player.sendMessage("Experience gain is disabled."); player.sendMessage("Experience gain is disabled.");
} }
@@ -51,7 +46,7 @@ public class ExperienceGain implements IVoicedCommandHandler
{ {
if (player.getVariables().getBoolean("EXPOFF", false)) 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.getVariables().set("EXPOFF", false);
player.sendMessage("Experience gain is enabled."); player.sendMessage("Experience gain is enabled.");
} }
@@ -59,15 +54,6 @@ public class ExperienceGain implements IVoicedCommandHandler
return true; 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 @Override
public String[] getVoicedCommandList() public String[] getVoicedCommandList()
{ {
@@ -193,6 +193,8 @@ import org.l2jmobius.gameserver.model.entity.Hero;
import org.l2jmobius.gameserver.model.entity.Siege; import org.l2jmobius.gameserver.model.entity.Siege;
import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; import org.l2jmobius.gameserver.model.eventengine.AbstractEvent;
import org.l2jmobius.gameserver.model.events.EventDispatcher; 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.OnPlayerAbilityPointsChanged;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerEquipItem; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerEquipItem;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerFameChanged; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerFameChanged;
@@ -209,6 +211,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.OnPlayerPvPKill;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerReputationChanged; 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.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.fishing.Fishing;
import org.l2jmobius.gameserver.model.holders.ItemHolder; import org.l2jmobius.gameserver.model.holders.ItemHolder;
import org.l2jmobius.gameserver.model.holders.MovieHolder; import org.l2jmobius.gameserver.model.holders.MovieHolder;
@@ -13691,6 +13695,25 @@ public class PlayerInstance extends Playable
vars.storeMe(); 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. * Gets the last commission infos.
* @return the last commission infos * @return the last commission infos
@@ -607,6 +607,13 @@ public class EnterWorld implements IClientIncomingPacket
OfflineTradersTable.onTransaction(player, true, false); 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(); player.broadcastUserInfo();
if (BeautyShopData.getInstance().hasBeautyData(player.getRace(), player.getAppearance().getSexType())) if (BeautyShopData.getInstance().hasBeautyData(player.getRace(), player.getAppearance().getSexType()))
@@ -17,12 +17,7 @@
package handlers.usercommandhandlers; package handlers.usercommandhandlers;
import org.l2jmobius.gameserver.handler.IVoicedCommandHandler; 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.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 * @author xban1x
@@ -42,7 +37,7 @@ public class ExperienceGain implements IVoicedCommandHandler
{ {
if (!player.getVariables().getBoolean("EXPOFF", false)) 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.getVariables().set("EXPOFF", true);
player.sendMessage("Experience gain is disabled."); player.sendMessage("Experience gain is disabled.");
} }
@@ -51,7 +46,7 @@ public class ExperienceGain implements IVoicedCommandHandler
{ {
if (player.getVariables().getBoolean("EXPOFF", false)) 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.getVariables().set("EXPOFF", false);
player.sendMessage("Experience gain is enabled."); player.sendMessage("Experience gain is enabled.");
} }
@@ -59,15 +54,6 @@ public class ExperienceGain implements IVoicedCommandHandler
return true; 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 @Override
public String[] getVoicedCommandList() public String[] getVoicedCommandList()
{ {
@@ -194,6 +194,8 @@ import org.l2jmobius.gameserver.model.entity.Hero;
import org.l2jmobius.gameserver.model.entity.Siege; import org.l2jmobius.gameserver.model.entity.Siege;
import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; import org.l2jmobius.gameserver.model.eventengine.AbstractEvent;
import org.l2jmobius.gameserver.model.events.EventDispatcher; 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.OnPlayerAbilityPointsChanged;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerEquipItem; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerEquipItem;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerFameChanged; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerFameChanged;
@@ -210,6 +212,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.OnPlayerPvPKill;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerReputationChanged; 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.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.fishing.Fishing;
import org.l2jmobius.gameserver.model.holders.AttendanceInfoHolder; import org.l2jmobius.gameserver.model.holders.AttendanceInfoHolder;
import org.l2jmobius.gameserver.model.holders.ItemHolder; import org.l2jmobius.gameserver.model.holders.ItemHolder;
@@ -13698,6 +13702,25 @@ public class PlayerInstance extends Playable
vars.storeMe(); 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. * Gets the last commission infos.
* @return the last commission infos * @return the last commission infos
@@ -612,6 +612,13 @@ public class EnterWorld implements IClientIncomingPacket
OfflineTradersTable.onTransaction(player, true, false); 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(); player.broadcastUserInfo();
if (BeautyShopData.getInstance().hasBeautyData(player.getRace(), player.getAppearance().getSexType())) if (BeautyShopData.getInstance().hasBeautyData(player.getRace(), player.getAppearance().getSexType()))
@@ -17,12 +17,7 @@
package handlers.usercommandhandlers; package handlers.usercommandhandlers;
import org.l2jmobius.gameserver.handler.IVoicedCommandHandler; 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.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 * @author xban1x
@@ -42,7 +37,7 @@ public class ExperienceGain implements IVoicedCommandHandler
{ {
if (!player.getVariables().getBoolean("EXPOFF", false)) 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.getVariables().set("EXPOFF", true);
player.sendMessage("Experience gain is disabled."); player.sendMessage("Experience gain is disabled.");
} }
@@ -51,7 +46,7 @@ public class ExperienceGain implements IVoicedCommandHandler
{ {
if (player.getVariables().getBoolean("EXPOFF", false)) 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.getVariables().set("EXPOFF", false);
player.sendMessage("Experience gain is enabled."); player.sendMessage("Experience gain is enabled.");
} }
@@ -59,15 +54,6 @@ public class ExperienceGain implements IVoicedCommandHandler
return true; 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 @Override
public String[] getVoicedCommandList() public String[] getVoicedCommandList()
{ {
@@ -195,6 +195,8 @@ import org.l2jmobius.gameserver.model.entity.Hero;
import org.l2jmobius.gameserver.model.entity.Siege; import org.l2jmobius.gameserver.model.entity.Siege;
import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; import org.l2jmobius.gameserver.model.eventengine.AbstractEvent;
import org.l2jmobius.gameserver.model.events.EventDispatcher; 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.OnPlayerAbilityPointsChanged;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerEquipItem; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerEquipItem;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerFameChanged; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerFameChanged;
@@ -211,6 +213,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.OnPlayerPvPKill;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerReputationChanged; 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.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.fishing.Fishing;
import org.l2jmobius.gameserver.model.holders.AttendanceInfoHolder; import org.l2jmobius.gameserver.model.holders.AttendanceInfoHolder;
import org.l2jmobius.gameserver.model.holders.ItemHolder; import org.l2jmobius.gameserver.model.holders.ItemHolder;
@@ -13701,6 +13705,25 @@ public class PlayerInstance extends Playable
vars.storeMe(); 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. * Gets the last commission infos.
* @return the last commission infos * @return the last commission infos
@@ -612,6 +612,13 @@ public class EnterWorld implements IClientIncomingPacket
OfflineTradersTable.onTransaction(player, true, false); 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(); player.broadcastUserInfo();
if (BeautyShopData.getInstance().hasBeautyData(player.getRace(), player.getAppearance().getSexType())) if (BeautyShopData.getInstance().hasBeautyData(player.getRace(), player.getAppearance().getSexType()))
@@ -17,12 +17,7 @@
package handlers.usercommandhandlers; package handlers.usercommandhandlers;
import org.l2jmobius.gameserver.handler.IVoicedCommandHandler; 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.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 * @author xban1x
@@ -42,7 +37,7 @@ public class ExperienceGain implements IVoicedCommandHandler
{ {
if (!player.getVariables().getBoolean("EXPOFF", false)) 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.getVariables().set("EXPOFF", true);
player.sendMessage("Experience gain is disabled."); player.sendMessage("Experience gain is disabled.");
} }
@@ -51,7 +46,7 @@ public class ExperienceGain implements IVoicedCommandHandler
{ {
if (player.getVariables().getBoolean("EXPOFF", false)) 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.getVariables().set("EXPOFF", false);
player.sendMessage("Experience gain is enabled."); player.sendMessage("Experience gain is enabled.");
} }
@@ -59,15 +54,6 @@ public class ExperienceGain implements IVoicedCommandHandler
return true; 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 @Override
public String[] getVoicedCommandList() public String[] getVoicedCommandList()
{ {
@@ -194,6 +194,8 @@ import org.l2jmobius.gameserver.model.entity.Hero;
import org.l2jmobius.gameserver.model.entity.Siege; import org.l2jmobius.gameserver.model.entity.Siege;
import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; import org.l2jmobius.gameserver.model.eventengine.AbstractEvent;
import org.l2jmobius.gameserver.model.events.EventDispatcher; 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.OnPlayerAbilityPointsChanged;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerEquipItem; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerEquipItem;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerFameChanged; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerFameChanged;
@@ -210,6 +212,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.OnPlayerPvPKill;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerReputationChanged; 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.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.fishing.Fishing;
import org.l2jmobius.gameserver.model.holders.AttendanceInfoHolder; import org.l2jmobius.gameserver.model.holders.AttendanceInfoHolder;
import org.l2jmobius.gameserver.model.holders.ItemHolder; import org.l2jmobius.gameserver.model.holders.ItemHolder;
@@ -13660,6 +13664,25 @@ public class PlayerInstance extends Playable
vars.storeMe(); 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. * Gets the last commission infos.
* @return the last commission infos * @return the last commission infos
@@ -612,6 +612,13 @@ public class EnterWorld implements IClientIncomingPacket
OfflineTradersTable.onTransaction(player, true, false); 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(); player.broadcastUserInfo();
if (BeautyShopData.getInstance().hasBeautyData(player.getRace(), player.getAppearance().getSexType())) if (BeautyShopData.getInstance().hasBeautyData(player.getRace(), player.getAppearance().getSexType()))
@@ -17,12 +17,7 @@
package handlers.usercommandhandlers; package handlers.usercommandhandlers;
import org.l2jmobius.gameserver.handler.IVoicedCommandHandler; 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.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 * @author xban1x
@@ -42,7 +37,7 @@ public class ExperienceGain implements IVoicedCommandHandler
{ {
if (!player.getVariables().getBoolean("EXPOFF", false)) 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.getVariables().set("EXPOFF", true);
player.sendMessage("Experience gain is disabled."); player.sendMessage("Experience gain is disabled.");
} }
@@ -51,7 +46,7 @@ public class ExperienceGain implements IVoicedCommandHandler
{ {
if (player.getVariables().getBoolean("EXPOFF", false)) 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.getVariables().set("EXPOFF", false);
player.sendMessage("Experience gain is enabled."); player.sendMessage("Experience gain is enabled.");
} }
@@ -59,15 +54,6 @@ public class ExperienceGain implements IVoicedCommandHandler
return true; 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 @Override
public String[] getVoicedCommandList() public String[] getVoicedCommandList()
{ {
@@ -194,6 +194,8 @@ import org.l2jmobius.gameserver.model.entity.Hero;
import org.l2jmobius.gameserver.model.entity.Siege; import org.l2jmobius.gameserver.model.entity.Siege;
import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; import org.l2jmobius.gameserver.model.eventengine.AbstractEvent;
import org.l2jmobius.gameserver.model.events.EventDispatcher; 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.OnPlayerAbilityPointsChanged;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerEquipItem; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerEquipItem;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerFameChanged; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerFameChanged;
@@ -210,6 +212,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.OnPlayerPvPKill;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerReputationChanged; 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.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.fishing.Fishing;
import org.l2jmobius.gameserver.model.holders.AttendanceInfoHolder; import org.l2jmobius.gameserver.model.holders.AttendanceInfoHolder;
import org.l2jmobius.gameserver.model.holders.ItemHolder; import org.l2jmobius.gameserver.model.holders.ItemHolder;
@@ -13646,6 +13650,25 @@ public class PlayerInstance extends Playable
vars.storeMe(); 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. * Gets the last commission infos.
* @return the last commission infos * @return the last commission infos
@@ -612,6 +612,13 @@ public class EnterWorld implements IClientIncomingPacket
OfflineTradersTable.onTransaction(player, true, false); 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(); player.broadcastUserInfo();
if (BeautyShopData.getInstance().hasBeautyData(player.getRace(), player.getAppearance().getSexType())) if (BeautyShopData.getInstance().hasBeautyData(player.getRace(), player.getAppearance().getSexType()))
@@ -17,12 +17,7 @@
package handlers.usercommandhandlers; package handlers.usercommandhandlers;
import org.l2jmobius.gameserver.handler.IVoicedCommandHandler; 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.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 * @author xban1x
@@ -42,7 +37,7 @@ public class ExperienceGain implements IVoicedCommandHandler
{ {
if (!player.getVariables().getBoolean("EXPOFF", false)) 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.getVariables().set("EXPOFF", true);
player.sendMessage("Experience gain is disabled."); player.sendMessage("Experience gain is disabled.");
} }
@@ -51,7 +46,7 @@ public class ExperienceGain implements IVoicedCommandHandler
{ {
if (player.getVariables().getBoolean("EXPOFF", false)) 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.getVariables().set("EXPOFF", false);
player.sendMessage("Experience gain is enabled."); player.sendMessage("Experience gain is enabled.");
} }
@@ -59,15 +54,6 @@ public class ExperienceGain implements IVoicedCommandHandler
return true; 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 @Override
public String[] getVoicedCommandList() public String[] getVoicedCommandList()
{ {
@@ -194,6 +194,8 @@ import org.l2jmobius.gameserver.model.entity.Hero;
import org.l2jmobius.gameserver.model.entity.Siege; import org.l2jmobius.gameserver.model.entity.Siege;
import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; import org.l2jmobius.gameserver.model.eventengine.AbstractEvent;
import org.l2jmobius.gameserver.model.events.EventDispatcher; 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.OnPlayerAbilityPointsChanged;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerEquipItem; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerEquipItem;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerFameChanged; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerFameChanged;
@@ -210,6 +212,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.OnPlayerPvPKill;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerReputationChanged; 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.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.fishing.Fishing;
import org.l2jmobius.gameserver.model.holders.AttendanceInfoHolder; import org.l2jmobius.gameserver.model.holders.AttendanceInfoHolder;
import org.l2jmobius.gameserver.model.holders.ItemHolder; import org.l2jmobius.gameserver.model.holders.ItemHolder;
@@ -13649,6 +13653,25 @@ public class PlayerInstance extends Playable
vars.storeMe(); 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. * Gets the last commission infos.
* @return the last commission infos * @return the last commission infos
@@ -612,6 +612,13 @@ public class EnterWorld implements IClientIncomingPacket
OfflineTradersTable.onTransaction(player, true, false); 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(); player.broadcastUserInfo();
if (BeautyShopData.getInstance().hasBeautyData(player.getRace(), player.getAppearance().getSexType())) if (BeautyShopData.getInstance().hasBeautyData(player.getRace(), player.getAppearance().getSexType()))
@@ -17,12 +17,7 @@
package handlers.usercommandhandlers; package handlers.usercommandhandlers;
import org.l2jmobius.gameserver.handler.IVoicedCommandHandler; 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.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 * @author xban1x
@@ -42,7 +37,7 @@ public class ExperienceGain implements IVoicedCommandHandler
{ {
if (!player.getVariables().getBoolean("EXPOFF", false)) 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.getVariables().set("EXPOFF", true);
player.sendMessage("Experience gain is disabled."); player.sendMessage("Experience gain is disabled.");
} }
@@ -51,7 +46,7 @@ public class ExperienceGain implements IVoicedCommandHandler
{ {
if (player.getVariables().getBoolean("EXPOFF", false)) 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.getVariables().set("EXPOFF", false);
player.sendMessage("Experience gain is enabled."); player.sendMessage("Experience gain is enabled.");
} }
@@ -59,15 +54,6 @@ public class ExperienceGain implements IVoicedCommandHandler
return true; 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 @Override
public String[] getVoicedCommandList() public String[] getVoicedCommandList()
{ {
@@ -194,6 +194,8 @@ import org.l2jmobius.gameserver.model.entity.Hero;
import org.l2jmobius.gameserver.model.entity.Siege; import org.l2jmobius.gameserver.model.entity.Siege;
import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; import org.l2jmobius.gameserver.model.eventengine.AbstractEvent;
import org.l2jmobius.gameserver.model.events.EventDispatcher; 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.OnPlayerAbilityPointsChanged;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerEquipItem; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerEquipItem;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerFameChanged; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerFameChanged;
@@ -210,6 +212,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.OnPlayerPvPKill;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerReputationChanged; 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.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.fishing.Fishing;
import org.l2jmobius.gameserver.model.holders.AttendanceInfoHolder; import org.l2jmobius.gameserver.model.holders.AttendanceInfoHolder;
import org.l2jmobius.gameserver.model.holders.ItemHolder; import org.l2jmobius.gameserver.model.holders.ItemHolder;
@@ -13655,6 +13659,25 @@ public class PlayerInstance extends Playable
vars.storeMe(); 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. * Gets the last commission infos.
* @return the last commission infos * @return the last commission infos
@@ -612,6 +612,13 @@ public class EnterWorld implements IClientIncomingPacket
OfflineTradersTable.onTransaction(player, true, false); 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(); player.broadcastUserInfo();
if (BeautyShopData.getInstance().hasBeautyData(player.getRace(), player.getAppearance().getSexType())) if (BeautyShopData.getInstance().hasBeautyData(player.getRace(), player.getAppearance().getSexType()))
@@ -17,12 +17,7 @@
package handlers.usercommandhandlers; package handlers.usercommandhandlers;
import org.l2jmobius.gameserver.handler.IVoicedCommandHandler; 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.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 * @author xban1x
@@ -42,7 +37,7 @@ public class ExperienceGain implements IVoicedCommandHandler
{ {
if (!player.getVariables().getBoolean("EXPOFF", false)) 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.getVariables().set("EXPOFF", true);
player.sendMessage("Experience gain is disabled."); player.sendMessage("Experience gain is disabled.");
} }
@@ -51,7 +46,7 @@ public class ExperienceGain implements IVoicedCommandHandler
{ {
if (player.getVariables().getBoolean("EXPOFF", false)) 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.getVariables().set("EXPOFF", false);
player.sendMessage("Experience gain is enabled."); player.sendMessage("Experience gain is enabled.");
} }
@@ -59,15 +54,6 @@ public class ExperienceGain implements IVoicedCommandHandler
return true; 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 @Override
public String[] getVoicedCommandList() public String[] getVoicedCommandList()
{ {
@@ -195,6 +195,8 @@ import org.l2jmobius.gameserver.model.entity.Hero;
import org.l2jmobius.gameserver.model.entity.Siege; import org.l2jmobius.gameserver.model.entity.Siege;
import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; import org.l2jmobius.gameserver.model.eventengine.AbstractEvent;
import org.l2jmobius.gameserver.model.events.EventDispatcher; 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.OnPlayerAbilityPointsChanged;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerEquipItem; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerEquipItem;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerFameChanged; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerFameChanged;
@@ -211,6 +213,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.OnPlayerPvPKill;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerReputationChanged; 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.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.fishing.Fishing;
import org.l2jmobius.gameserver.model.holders.AttendanceInfoHolder; import org.l2jmobius.gameserver.model.holders.AttendanceInfoHolder;
import org.l2jmobius.gameserver.model.holders.ItemHolder; import org.l2jmobius.gameserver.model.holders.ItemHolder;
@@ -13611,6 +13615,25 @@ public class PlayerInstance extends Playable
vars.storeMe(); 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. * Gets the last commission infos.
* @return the last commission infos * @return the last commission infos
@@ -613,6 +613,13 @@ public class EnterWorld implements IClientIncomingPacket
OfflineTradersTable.onTransaction(player, true, false); 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.updateSymbolSealSkills(); player.updateSymbolSealSkills();
player.broadcastUserInfo(); player.broadcastUserInfo();
@@ -17,12 +17,7 @@
package handlers.usercommandhandlers; package handlers.usercommandhandlers;
import org.l2jmobius.gameserver.handler.IVoicedCommandHandler; 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.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.events.EventType;
import org.l2jmobius.gameserver.model.events.impl.creature.playable.OnPlayableExpChanged;
import org.l2jmobius.gameserver.model.events.listeners.FunctionEventListener;
import org.l2jmobius.gameserver.model.events.returns.TerminateReturn;
/** /**
* @author xban1x * @author xban1x
@@ -42,7 +37,7 @@ public class ExperienceGain implements IVoicedCommandHandler
{ {
if (!player.getVariables().getBoolean("EXPOFF", false)) if (!player.getVariables().getBoolean("EXPOFF", false))
{ {
player.addListener(new FunctionEventListener(player, EventType.ON_PLAYABLE_EXP_CHANGED, (OnPlayableExpChanged event) -> onExperienceReceived(event.getActiveChar()), this)); player.disableExpGain();
player.getVariables().set("EXPOFF", true); player.getVariables().set("EXPOFF", true);
player.sendMessage("Experience gain is disabled."); player.sendMessage("Experience gain is disabled.");
} }
@@ -51,7 +46,7 @@ public class ExperienceGain implements IVoicedCommandHandler
{ {
if (player.getVariables().getBoolean("EXPOFF", false)) 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.getVariables().set("EXPOFF", false);
player.sendMessage("Experience gain is enabled."); player.sendMessage("Experience gain is enabled.");
} }
@@ -59,15 +54,6 @@ public class ExperienceGain implements IVoicedCommandHandler
return true; return true;
} }
public TerminateReturn onExperienceReceived(Playable playable)
{
if (playable.isPlayer() && (playable.getActingPlayer().isDead()))
{
return new TerminateReturn(false, false, false);
}
return new TerminateReturn(true, true, true);
}
@Override @Override
public String[] getVoicedCommandList() public String[] getVoicedCommandList()
{ {
@@ -188,6 +188,8 @@ import org.l2jmobius.gameserver.model.entity.Hero;
import org.l2jmobius.gameserver.model.entity.Siege; import org.l2jmobius.gameserver.model.entity.Siege;
import org.l2jmobius.gameserver.model.entity.TvTEvent; import org.l2jmobius.gameserver.model.entity.TvTEvent;
import org.l2jmobius.gameserver.model.events.EventDispatcher; import org.l2jmobius.gameserver.model.events.EventDispatcher;
import org.l2jmobius.gameserver.model.events.EventType;
import org.l2jmobius.gameserver.model.events.impl.creature.playable.OnPlayableExpChanged;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerEquipItem; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerEquipItem;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerFameChanged; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerFameChanged;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerHennaRemove; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerHennaRemove;
@@ -200,6 +202,8 @@ import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerProfes
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerPvPChanged; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerPvPChanged;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerPvPKill; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerPvPKill;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerTransform; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerTransform;
import org.l2jmobius.gameserver.model.events.listeners.FunctionEventListener;
import org.l2jmobius.gameserver.model.events.returns.TerminateReturn;
import org.l2jmobius.gameserver.model.fishing.Fish; import org.l2jmobius.gameserver.model.fishing.Fish;
import org.l2jmobius.gameserver.model.fishing.Fishing; import org.l2jmobius.gameserver.model.fishing.Fishing;
import org.l2jmobius.gameserver.model.holders.AdditionalSkillHolder; import org.l2jmobius.gameserver.model.holders.AdditionalSkillHolder;
@@ -14441,4 +14445,23 @@ public class PlayerInstance extends Playable
vars.set(GAME_POINTS_VAR, Math.max(points, 0)); vars.set(GAME_POINTS_VAR, Math.max(points, 0));
vars.storeMe(); 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);
}
} }
@@ -617,6 +617,13 @@ public class EnterWorld implements IClientIncomingPacket
OfflineTradersTable.onTransaction(player, true, false); OfflineTradersTable.onTransaction(player, true, false);
} }
// Check if expoff is enabled.
if (player.getVariables().getBoolean("EXPOFF", false))
{
player.disableExpGain();
player.sendMessage("Experience gain is disabled.");
}
// Prevent relogin in game gfx. // Prevent relogin in game gfx.
player.sendPacket(new ValidateLocation(player)); player.sendPacket(new ValidateLocation(player));
@@ -17,12 +17,7 @@
package handlers.usercommandhandlers; package handlers.usercommandhandlers;
import org.l2jmobius.gameserver.handler.IVoicedCommandHandler; 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.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.events.EventType;
import org.l2jmobius.gameserver.model.events.impl.creature.playable.OnPlayableExpChanged;
import org.l2jmobius.gameserver.model.events.listeners.FunctionEventListener;
import org.l2jmobius.gameserver.model.events.returns.TerminateReturn;
/** /**
* @author xban1x * @author xban1x
@@ -42,7 +37,7 @@ public class ExperienceGain implements IVoicedCommandHandler
{ {
if (!player.getVariables().getBoolean("EXPOFF", false)) if (!player.getVariables().getBoolean("EXPOFF", false))
{ {
player.addListener(new FunctionEventListener(player, EventType.ON_PLAYABLE_EXP_CHANGED, (OnPlayableExpChanged event) -> onExperienceReceived(event.getActiveChar()), this)); player.disableExpGain();
player.getVariables().set("EXPOFF", true); player.getVariables().set("EXPOFF", true);
player.sendMessage("Experience gain is disabled."); player.sendMessage("Experience gain is disabled.");
} }
@@ -51,7 +46,7 @@ public class ExperienceGain implements IVoicedCommandHandler
{ {
if (player.getVariables().getBoolean("EXPOFF", false)) 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.getVariables().set("EXPOFF", false);
player.sendMessage("Experience gain is enabled."); player.sendMessage("Experience gain is enabled.");
} }
@@ -59,15 +54,6 @@ public class ExperienceGain implements IVoicedCommandHandler
return true; return true;
} }
public TerminateReturn onExperienceReceived(Playable playable)
{
if (playable.isPlayer() && (playable.getActingPlayer().isDead()))
{
return new TerminateReturn(false, false, false);
}
return new TerminateReturn(true, true, true);
}
@Override @Override
public String[] getVoicedCommandList() public String[] getVoicedCommandList()
{ {
@@ -192,6 +192,8 @@ import org.l2jmobius.gameserver.model.entity.NevitSystem;
import org.l2jmobius.gameserver.model.entity.Siege; import org.l2jmobius.gameserver.model.entity.Siege;
import org.l2jmobius.gameserver.model.entity.TvTEvent; import org.l2jmobius.gameserver.model.entity.TvTEvent;
import org.l2jmobius.gameserver.model.events.EventDispatcher; import org.l2jmobius.gameserver.model.events.EventDispatcher;
import org.l2jmobius.gameserver.model.events.EventType;
import org.l2jmobius.gameserver.model.events.impl.creature.playable.OnPlayableExpChanged;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerEquipItem; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerEquipItem;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerFameChanged; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerFameChanged;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerHennaRemove; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerHennaRemove;
@@ -204,6 +206,8 @@ import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerProfes
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerPvPChanged; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerPvPChanged;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerPvPKill; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerPvPKill;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerTransform; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerTransform;
import org.l2jmobius.gameserver.model.events.listeners.FunctionEventListener;
import org.l2jmobius.gameserver.model.events.returns.TerminateReturn;
import org.l2jmobius.gameserver.model.fishing.Fish; import org.l2jmobius.gameserver.model.fishing.Fish;
import org.l2jmobius.gameserver.model.fishing.Fishing; import org.l2jmobius.gameserver.model.fishing.Fishing;
import org.l2jmobius.gameserver.model.holders.AdditionalSkillHolder; import org.l2jmobius.gameserver.model.holders.AdditionalSkillHolder;
@@ -14536,4 +14540,23 @@ public class PlayerInstance extends Playable
vars.set(GAME_POINTS_VAR, Math.max(points, 0)); vars.set(GAME_POINTS_VAR, Math.max(points, 0));
vars.storeMe(); 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);
}
} }
@@ -615,6 +615,13 @@ public class EnterWorld implements IClientIncomingPacket
OfflineTradersTable.onTransaction(player, true, false); OfflineTradersTable.onTransaction(player, true, false);
} }
// Check if expoff is enabled.
if (player.getVariables().getBoolean("EXPOFF", false))
{
player.disableExpGain();
player.sendMessage("Experience gain is disabled.");
}
// Prevent relogin in game gfx. // Prevent relogin in game gfx.
player.sendPacket(new ValidateLocation(player)); player.sendPacket(new ValidateLocation(player));
@@ -17,12 +17,7 @@
package handlers.usercommandhandlers; package handlers.usercommandhandlers;
import org.l2jmobius.gameserver.handler.IVoicedCommandHandler; 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.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 * @author xban1x
@@ -42,7 +37,7 @@ public class ExperienceGain implements IVoicedCommandHandler
{ {
if (!player.getVariables().getBoolean("EXPOFF", false)) 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.getVariables().set("EXPOFF", true);
player.sendMessage("Experience gain is disabled."); player.sendMessage("Experience gain is disabled.");
} }
@@ -51,7 +46,7 @@ public class ExperienceGain implements IVoicedCommandHandler
{ {
if (player.getVariables().getBoolean("EXPOFF", false)) 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.getVariables().set("EXPOFF", false);
player.sendMessage("Experience gain is enabled."); player.sendMessage("Experience gain is enabled.");
} }
@@ -59,15 +54,6 @@ public class ExperienceGain implements IVoicedCommandHandler
return true; 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 @Override
public String[] getVoicedCommandList() public String[] getVoicedCommandList()
{ {
@@ -194,6 +194,8 @@ import org.l2jmobius.gameserver.model.entity.Hero;
import org.l2jmobius.gameserver.model.entity.Siege; import org.l2jmobius.gameserver.model.entity.Siege;
import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; import org.l2jmobius.gameserver.model.eventengine.AbstractEvent;
import org.l2jmobius.gameserver.model.events.EventDispatcher; 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.OnPlayerAbilityPointsChanged;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerEquipItem; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerEquipItem;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerFameChanged; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerFameChanged;
@@ -210,6 +212,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.OnPlayerPvPKill;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerReputationChanged; 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.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.fishing.Fishing;
import org.l2jmobius.gameserver.model.holders.AttendanceInfoHolder; import org.l2jmobius.gameserver.model.holders.AttendanceInfoHolder;
import org.l2jmobius.gameserver.model.holders.ItemHolder; import org.l2jmobius.gameserver.model.holders.ItemHolder;
@@ -13540,6 +13544,25 @@ public class PlayerInstance extends Playable
vars.storeMe(); 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. * Gets the last commission infos.
* @return the last commission infos * @return the last commission infos
@@ -596,6 +596,13 @@ public class EnterWorld implements IClientIncomingPacket
OfflineTradersTable.onTransaction(player, true, false); 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(); player.broadcastUserInfo();
if (BeautyShopData.getInstance().hasBeautyData(player.getRace(), player.getAppearance().getSexType())) if (BeautyShopData.getInstance().hasBeautyData(player.getRace(), player.getAppearance().getSexType()))
@@ -17,12 +17,7 @@
package handlers.usercommandhandlers; package handlers.usercommandhandlers;
import org.l2jmobius.gameserver.handler.IVoicedCommandHandler; 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.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 * @author xban1x
@@ -42,7 +37,7 @@ public class ExperienceGain implements IVoicedCommandHandler
{ {
if (!player.getVariables().getBoolean("EXPOFF", false)) 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.getVariables().set("EXPOFF", true);
player.sendMessage("Experience gain is disabled."); player.sendMessage("Experience gain is disabled.");
} }
@@ -51,7 +46,7 @@ public class ExperienceGain implements IVoicedCommandHandler
{ {
if (player.getVariables().getBoolean("EXPOFF", false)) 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.getVariables().set("EXPOFF", false);
player.sendMessage("Experience gain is enabled."); player.sendMessage("Experience gain is enabled.");
} }
@@ -59,15 +54,6 @@ public class ExperienceGain implements IVoicedCommandHandler
return true; 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 @Override
public String[] getVoicedCommandList() public String[] getVoicedCommandList()
{ {
@@ -194,6 +194,8 @@ import org.l2jmobius.gameserver.model.entity.Hero;
import org.l2jmobius.gameserver.model.entity.Siege; import org.l2jmobius.gameserver.model.entity.Siege;
import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; import org.l2jmobius.gameserver.model.eventengine.AbstractEvent;
import org.l2jmobius.gameserver.model.events.EventDispatcher; 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.OnPlayerAbilityPointsChanged;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerEquipItem; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerEquipItem;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerFameChanged; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerFameChanged;
@@ -210,6 +212,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.OnPlayerPvPKill;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerReputationChanged; 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.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.fishing.Fishing;
import org.l2jmobius.gameserver.model.holders.AttendanceInfoHolder; import org.l2jmobius.gameserver.model.holders.AttendanceInfoHolder;
import org.l2jmobius.gameserver.model.holders.ItemHolder; import org.l2jmobius.gameserver.model.holders.ItemHolder;
@@ -13547,6 +13551,25 @@ public class PlayerInstance extends Playable
vars.storeMe(); 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. * Gets the last commission infos.
* @return the last commission infos * @return the last commission infos
@@ -596,6 +596,13 @@ public class EnterWorld implements IClientIncomingPacket
OfflineTradersTable.onTransaction(player, true, false); 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(); player.broadcastUserInfo();
if (BeautyShopData.getInstance().hasBeautyData(player.getRace(), player.getAppearance().getSexType())) if (BeautyShopData.getInstance().hasBeautyData(player.getRace(), player.getAppearance().getSexType()))
@@ -17,12 +17,7 @@
package handlers.usercommandhandlers; package handlers.usercommandhandlers;
import org.l2jmobius.gameserver.handler.IVoicedCommandHandler; 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.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 * @author xban1x
@@ -42,7 +37,7 @@ public class ExperienceGain implements IVoicedCommandHandler
{ {
if (!player.getVariables().getBoolean("EXPOFF", false)) 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.getVariables().set("EXPOFF", true);
player.sendMessage("Experience gain is disabled."); player.sendMessage("Experience gain is disabled.");
} }
@@ -51,7 +46,7 @@ public class ExperienceGain implements IVoicedCommandHandler
{ {
if (player.getVariables().getBoolean("EXPOFF", false)) 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.getVariables().set("EXPOFF", false);
player.sendMessage("Experience gain is enabled."); player.sendMessage("Experience gain is enabled.");
} }
@@ -59,15 +54,6 @@ public class ExperienceGain implements IVoicedCommandHandler
return true; 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 @Override
public String[] getVoicedCommandList() public String[] getVoicedCommandList()
{ {
@@ -194,6 +194,8 @@ import org.l2jmobius.gameserver.model.entity.Hero;
import org.l2jmobius.gameserver.model.entity.Siege; import org.l2jmobius.gameserver.model.entity.Siege;
import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; import org.l2jmobius.gameserver.model.eventengine.AbstractEvent;
import org.l2jmobius.gameserver.model.events.EventDispatcher; 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.OnPlayerAbilityPointsChanged;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerEquipItem; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerEquipItem;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerFameChanged; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerFameChanged;
@@ -210,6 +212,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.OnPlayerPvPKill;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerReputationChanged; 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.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.fishing.Fishing;
import org.l2jmobius.gameserver.model.holders.AttendanceInfoHolder; import org.l2jmobius.gameserver.model.holders.AttendanceInfoHolder;
import org.l2jmobius.gameserver.model.holders.ItemHolder; import org.l2jmobius.gameserver.model.holders.ItemHolder;
@@ -13532,6 +13536,25 @@ public class PlayerInstance extends Playable
vars.storeMe(); 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. * Gets the last commission infos.
* @return the last commission infos * @return the last commission infos
@@ -598,6 +598,13 @@ public class EnterWorld implements IClientIncomingPacket
OfflineTradersTable.onTransaction(player, true, false); 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(); player.broadcastUserInfo();
if (BeautyShopData.getInstance().hasBeautyData(player.getRace(), player.getAppearance().getSexType())) if (BeautyShopData.getInstance().hasBeautyData(player.getRace(), player.getAppearance().getSexType()))
@@ -17,12 +17,7 @@
package handlers.usercommandhandlers; package handlers.usercommandhandlers;
import org.l2jmobius.gameserver.handler.IVoicedCommandHandler; 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.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 * @author xban1x
@@ -42,7 +37,7 @@ public class ExperienceGain implements IVoicedCommandHandler
{ {
if (!player.getVariables().getBoolean("EXPOFF", false)) 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.getVariables().set("EXPOFF", true);
player.sendMessage("Experience gain is disabled."); player.sendMessage("Experience gain is disabled.");
} }
@@ -51,7 +46,7 @@ public class ExperienceGain implements IVoicedCommandHandler
{ {
if (player.getVariables().getBoolean("EXPOFF", false)) 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.getVariables().set("EXPOFF", false);
player.sendMessage("Experience gain is enabled."); player.sendMessage("Experience gain is enabled.");
} }
@@ -59,15 +54,6 @@ public class ExperienceGain implements IVoicedCommandHandler
return true; 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 @Override
public String[] getVoicedCommandList() public String[] getVoicedCommandList()
{ {
@@ -197,6 +197,8 @@ import org.l2jmobius.gameserver.model.entity.Hero;
import org.l2jmobius.gameserver.model.entity.Siege; import org.l2jmobius.gameserver.model.entity.Siege;
import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; import org.l2jmobius.gameserver.model.eventengine.AbstractEvent;
import org.l2jmobius.gameserver.model.events.EventDispatcher; 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.OnPlayerAbilityPointsChanged;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerEquipItem; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerEquipItem;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerFameChanged; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerFameChanged;
@@ -213,6 +215,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.OnPlayerPvPKill;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerReputationChanged; 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.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.fishing.Fishing;
import org.l2jmobius.gameserver.model.holders.AttendanceInfoHolder; import org.l2jmobius.gameserver.model.holders.AttendanceInfoHolder;
import org.l2jmobius.gameserver.model.holders.ElementalSpiritDataHolder; import org.l2jmobius.gameserver.model.holders.ElementalSpiritDataHolder;
@@ -13574,6 +13578,25 @@ public class PlayerInstance extends Playable
vars.storeMe(); 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. * Gets the last commission infos.
* @return the last commission infos * @return the last commission infos
@@ -598,6 +598,13 @@ public class EnterWorld implements IClientIncomingPacket
OfflineTradersTable.onTransaction(player, true, false); 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(); player.broadcastUserInfo();
if (BeautyShopData.getInstance().hasBeautyData(player.getRace(), player.getAppearance().getSexType())) if (BeautyShopData.getInstance().hasBeautyData(player.getRace(), player.getAppearance().getSexType()))
@@ -17,12 +17,7 @@
package handlers.usercommandhandlers; package handlers.usercommandhandlers;
import org.l2jmobius.gameserver.handler.IVoicedCommandHandler; 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.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 * @author xban1x
@@ -42,7 +37,7 @@ public class ExperienceGain implements IVoicedCommandHandler
{ {
if (!player.getVariables().getBoolean("EXPOFF", false)) 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.getVariables().set("EXPOFF", true);
player.sendMessage("Experience gain is disabled."); player.sendMessage("Experience gain is disabled.");
} }
@@ -51,7 +46,7 @@ public class ExperienceGain implements IVoicedCommandHandler
{ {
if (player.getVariables().getBoolean("EXPOFF", false)) 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.getVariables().set("EXPOFF", false);
player.sendMessage("Experience gain is enabled."); player.sendMessage("Experience gain is enabled.");
} }
@@ -59,15 +54,6 @@ public class ExperienceGain implements IVoicedCommandHandler
return true; 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 @Override
public String[] getVoicedCommandList() public String[] getVoicedCommandList()
{ {
@@ -197,6 +197,8 @@ import org.l2jmobius.gameserver.model.entity.Hero;
import org.l2jmobius.gameserver.model.entity.Siege; import org.l2jmobius.gameserver.model.entity.Siege;
import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; import org.l2jmobius.gameserver.model.eventengine.AbstractEvent;
import org.l2jmobius.gameserver.model.events.EventDispatcher; 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.OnPlayerAbilityPointsChanged;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerEquipItem; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerEquipItem;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerFameChanged; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerFameChanged;
@@ -213,6 +215,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.OnPlayerPvPKill;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerReputationChanged; 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.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.fishing.Fishing;
import org.l2jmobius.gameserver.model.holders.AttendanceInfoHolder; import org.l2jmobius.gameserver.model.holders.AttendanceInfoHolder;
import org.l2jmobius.gameserver.model.holders.ElementalSpiritDataHolder; import org.l2jmobius.gameserver.model.holders.ElementalSpiritDataHolder;
@@ -13574,6 +13578,25 @@ public class PlayerInstance extends Playable
vars.storeMe(); 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. * Gets the last commission infos.
* @return the last commission infos * @return the last commission infos
@@ -598,6 +598,13 @@ public class EnterWorld implements IClientIncomingPacket
OfflineTradersTable.onTransaction(player, true, false); 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(); player.broadcastUserInfo();
if (BeautyShopData.getInstance().hasBeautyData(player.getRace(), player.getAppearance().getSexType())) if (BeautyShopData.getInstance().hasBeautyData(player.getRace(), player.getAppearance().getSexType()))
@@ -17,12 +17,7 @@
package handlers.usercommandhandlers; package handlers.usercommandhandlers;
import org.l2jmobius.gameserver.handler.IVoicedCommandHandler; 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.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 * @author xban1x
@@ -42,7 +37,7 @@ public class ExperienceGain implements IVoicedCommandHandler
{ {
if (!player.getVariables().getBoolean("EXPOFF", false)) 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.getVariables().set("EXPOFF", true);
player.sendMessage("Experience gain is disabled."); player.sendMessage("Experience gain is disabled.");
} }
@@ -51,7 +46,7 @@ public class ExperienceGain implements IVoicedCommandHandler
{ {
if (player.getVariables().getBoolean("EXPOFF", false)) 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.getVariables().set("EXPOFF", false);
player.sendMessage("Experience gain is enabled."); player.sendMessage("Experience gain is enabled.");
} }
@@ -59,15 +54,6 @@ public class ExperienceGain implements IVoicedCommandHandler
return true; 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 @Override
public String[] getVoicedCommandList() 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.entity.Siege;
import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; import org.l2jmobius.gameserver.model.eventengine.AbstractEvent;
import org.l2jmobius.gameserver.model.events.EventDispatcher; 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.OnPlayerAbilityPointsChanged;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerEquipItem; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerEquipItem;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerFameChanged; 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.OnPlayerPvPKill;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerReputationChanged; 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.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.fishing.Fishing;
import org.l2jmobius.gameserver.model.holders.AttendanceInfoHolder; import org.l2jmobius.gameserver.model.holders.AttendanceInfoHolder;
import org.l2jmobius.gameserver.model.holders.ElementalSpiritDataHolder; import org.l2jmobius.gameserver.model.holders.ElementalSpiritDataHolder;
@@ -13464,6 +13468,25 @@ public class PlayerInstance extends Playable
vars.storeMe(); 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. * Gets the last commission infos.
* @return the last commission infos * @return the last commission infos
@@ -599,6 +599,13 @@ public class EnterWorld implements IClientIncomingPacket
OfflineTradersTable.onTransaction(player, true, false); 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(); player.broadcastUserInfo();
if (BeautyShopData.getInstance().hasBeautyData(player.getRace(), player.getAppearance().getSexType())) if (BeautyShopData.getInstance().hasBeautyData(player.getRace(), player.getAppearance().getSexType()))
@@ -17,12 +17,7 @@
package handlers.usercommandhandlers; package handlers.usercommandhandlers;
import org.l2jmobius.gameserver.handler.IVoicedCommandHandler; 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.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 * @author xban1x
@@ -42,7 +37,7 @@ public class ExperienceGain implements IVoicedCommandHandler
{ {
if (!player.getVariables().getBoolean("EXPOFF", false)) 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.getVariables().set("EXPOFF", true);
player.sendMessage("Experience gain is disabled."); player.sendMessage("Experience gain is disabled.");
} }
@@ -51,7 +46,7 @@ public class ExperienceGain implements IVoicedCommandHandler
{ {
if (player.getVariables().getBoolean("EXPOFF", false)) 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.getVariables().set("EXPOFF", false);
player.sendMessage("Experience gain is enabled."); player.sendMessage("Experience gain is enabled.");
} }
@@ -59,15 +54,6 @@ public class ExperienceGain implements IVoicedCommandHandler
return true; 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 @Override
public String[] getVoicedCommandList() public String[] getVoicedCommandList()
{ {
@@ -194,6 +194,8 @@ import org.l2jmobius.gameserver.model.entity.Hero;
import org.l2jmobius.gameserver.model.entity.Siege; import org.l2jmobius.gameserver.model.entity.Siege;
import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; import org.l2jmobius.gameserver.model.eventengine.AbstractEvent;
import org.l2jmobius.gameserver.model.events.EventDispatcher; 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.OnPlayerAbilityPointsChanged;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerEquipItem; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerEquipItem;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerFameChanged; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerFameChanged;
@@ -210,6 +212,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.OnPlayerPvPKill;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerReputationChanged; 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.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.fishing.Fishing;
import org.l2jmobius.gameserver.model.holders.AttendanceInfoHolder; import org.l2jmobius.gameserver.model.holders.AttendanceInfoHolder;
import org.l2jmobius.gameserver.model.holders.ItemHolder; import org.l2jmobius.gameserver.model.holders.ItemHolder;
@@ -13556,6 +13560,25 @@ public class PlayerInstance extends Playable
vars.storeMe(); 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. * Gets the last commission infos.
* @return the last commission infos * @return the last commission infos
@@ -595,6 +595,13 @@ public class EnterWorld implements IClientIncomingPacket
OfflineTradersTable.onTransaction(player, true, false); 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(); player.broadcastUserInfo();
if (BeautyShopData.getInstance().hasBeautyData(player.getRace(), player.getAppearance().getSexType())) if (BeautyShopData.getInstance().hasBeautyData(player.getRace(), player.getAppearance().getSexType()))