Exception in thread "AISTPool-5" java.lang.StackOverflowError
at net.sf.l2j.gameserver.model.actor.instance.L2PcInstance.startWaterTask(L2PcInstance.java:9109)
at net.sf.l2j.gameserver.model.actor.instance.L2PcInstance.checkWaterState(L2PcInstance.java:9122)
at net.sf.l2j.gameserver.model.actor.instance.L2PcInstance.revalidateZone(L2PcInstance.java:1540)
at net.sf.l2j.gameserver.ai.L2CharacterAI.onEvtArrived(L2CharacterAI.java:626)
at net.sf.l2j.gameserver.ai.AbstractAI.notifyEvent(AbstractAI.java:373)
at net.sf.l2j.gameserver.ai.AbstractAI.notifyEvent(AbstractAI.java:296)
at net.sf.l2j.gameserver.model.actor.L2Character.moveToLocation(L2Character.java:3586)
at net.sf.l2j.gameserver.model.actor.L2Character$AIAccessor.moveTo(L2Character.java:2819)
at net.sf.l2j.gameserver.ai.AbstractAI.moveTo(AbstractAI.java:538)
at net.sf.l2j.gameserver.ai.AbstractAI.moveToPawn(AbstractAI.java:494)
at net.sf.l2j.gameserver.ai.L2CharacterAI.maybeMoveToPawn(L2CharacterAI.java:877)
at net.sf.l2j.gameserver.ai.L2PlayerAI.thinkCast(L2PlayerAI.java:235)
at net.sf.l2j.gameserver.ai.L2PlayerAI.onEvtThink(L2PlayerAI.java:312)
at net.sf.l2j.gameserver.ai.L2CharacterAI.onEvtArrived(L2CharacterAI.java:641)
at net.sf.l2j.gameserver.ai.AbstractAI.notifyEvent(AbstractAI.java:373)
at net.sf.l2j.gameserver.ai.AbstractAI.notifyEvent(AbstractAI.java:296)
at net.sf.l2j.gameserver.model.actor.L2Character.moveToLocation(L2Character.java:3586)
at net.sf.l2j.gameserver.model.actor.L2Character$AIAccessor.moveTo(L2Character.java:2819)
at net.sf.l2j.gameserver.ai.AbstractAI.moveTo(AbstractAI.java:538)
at net.sf.l2j.gameserver.ai.AbstractAI.moveToPawn(AbstractAI.java:494)
at net.sf.l2j.gameserver.ai.L2CharacterAI.maybeMoveToPawn(L2CharacterAI.java:877)
at net.sf.l2j.gameserver.ai.L2PlayerAI.thinkCast(L2PlayerAI.java:235)
at net.sf.l2j.gameserver.ai.L2PlayerAI.onEvtThink(L2PlayerAI.java:312)
at net.sf.l2j.gameserver.ai.L2CharacterAI.onEvtArrived(L2CharacterAI.java:641)
at net.sf.l2j.gameserver.ai.AbstractAI.notifyEvent(AbstractAI.java:373)
at net.sf.l2j.gameserver.ai.AbstractAI.notifyEvent(AbstractAI.java:296)
and 100 same error like last block
L2Character.java:3586 i marked it with plus "+"
....
if (offset > 0 || distance < 1)
{
// approximation for moving closer when z coordinates are different
// TODO: handle Z axis movement better
offset -= Math.abs(dz);
if (offset < 5)
offset = 5;
// If no distance to go through, the movement is canceled
if (distance < 1 || distance - offset <= 0)
{
if (Config.DEBUG)
_log.fine("already in range, no movement needed.");
// Notify the AI that the L2Character is arrived at destination
+ getAI().notifyEvent(CtrlEvent.EVT_ARRIVED);
return;
}
....
L2Character.java:2819
public void moveTo(int x, int y, int z, int offset)
{
+ moveToLocation(x, y, z, offset);
}
AbstractAI.java:538
protected void moveTo(int x, int y, int z, int offset)
{
// Check if actor can move
if (_actor.isMovementDisabled())
{
_actor.sendPacket(ActionFailed.STATIC_PACKET);
return;
}
// Set AI movement data
_clientMoving = true;
if (_accessor == null)
return;
// Calculate movement data for a move to location action and add the actor to
+ _accessor.moveTo(x, y, z, offset);
if (!_actor.isMoving())
{
_actor.sendPacket(ActionFailed.STATIC_PACKET);
return;
}
// Send a Server->Client packet CharMoveToLocation to the actor and all L2PcInstance in
_actor.broadcastPacket(new MoveToLocation(_actor));
}
protected boolean maybeMoveToPawn(L2Object target, int offset)
{
if (target == null || offset < 0) // skill radius -1
return false;
offset += _actor.getTemplate().getCollisionRadius();
if (target instanceof L2Character)
offset += ((L2Character) target).getTemplate().getCollisionRadius();
if (!_actor.isInsideRadius(target, offset, false, false))
{
if (getFollowTarget() != null)
{
int foffset = offset + (((L2Character) target).isMoving() ? 100 : 0);
// allow larger hit range when the target is moving (check is run only once per second)
if (!_actor.isInsideRadius(target, foffset, false, false))
{
if (!_actor.isAttackingNow() || _actor instanceof L2Summon)
+ moveToPawn(target, offset);
return true;
}
stopFollow();
return false;
}
if (_actor.isMovementDisabled() && !(_actor instanceof L2Attackable))
{
if (getIntention() == CtrlIntention.ATTACK)
setIntention(CtrlIntention.IDLE);
return true;
}
// If not running, set the L2Character movement type to run and send Server->Client packet ChangeMoveType to all others L2PcInstance
if (!(this instanceof L2PlayerAI) && !(this instanceof L2SummonAI))
_actor.setRunning();
if ((target instanceof L2Character) && !(target instanceof L2DoorInstance))
startFollow((L2Character) target, offset);
else
{
// Move the actor to Pawn server side AND client side by sending Server->Client packet MoveToPawn (broadcast)
moveToPawn(target, offset);
}
return true;
}
stopFollow();
return false;
}
L2PlayerAI.java:235
private void thinkCast()
{
L2Character target = (L2Character) getTarget();
if (Config.DEBUG)
_log.warning("L2PlayerAI: thinkCast -> Start");
if (_skill.getTargetType() == SkillTargetType.TARGET_GROUND && _actor instanceof L2PcInstance)
{
if (maybeMoveToPosition(((L2PcInstance) _actor).getCurrentSkillWorldPosition(), _skill.getCastRange()))
{
_actor.setIsCastingNow(false);
return;
}
}
else
{
if (checkTargetLost(target))
{
// Notify the target
if (_skill.isOffensive() && getTarget() != null)
setTarget(null);
_actor.setIsCastingNow(false);
return;
}
+ if (target != null && maybeMoveToPawn(target, _skill.getCastRange()))
{
_actor.setIsCastingNow(false);
return;
}
}
L2PlayerAI.java:312
protected void onEvtThink()
{
// Check if the actor can't use skills and if a thinking action isn't already in progress
if (_thinking && getIntention() != CtrlIntention.CAST) // casting must always continue
return;
// Start thinking action
_thinking = true;
try
{
// Manage AI thoughts
switch (getIntention())
{
case ATTACK:
thinkAttack();
break;
case CAST:
+ thinkCast();
break;
case PICK_UP:
thinkPickUp();
break;
case INTERACT:
thinkInteract();
break;
}
}
finally
{
// Stop thinking action
_thinking = false;
}
}
L2CharacterAI.java:641
protected void onEvtArrived()
{
_accessor.getActor().revalidateZone(true);
if (_accessor.getActor().moveToNextRoutePoint())
return;
if (_accessor.getActor() instanceof L2Attackable)
((L2Attackable) _accessor.getActor()).setIsReturningToSpawnPoint(false);
clientStoppedMoving();
// If the Intention was MOVE_TO, set the Intention to ACTIVE
if (getIntention() == CtrlIntention.MOVE_TO)
setIntention(CtrlIntention.ACTIVE);
// Launch actions corresponding to the Event Think
+ onEvtThink();
}
AbstractAI.java:373
...
case EVT_ARRIVED:
if (!_actor.isCastingNow() && !_actor.isCastingSimultaneouslyNow())
+ onEvtArrived();
break;
...
AbstractAI.java:296
public final void notifyEvent(CtrlEvent evt)
{
+ notifyEvent(evt, null, null);
}
i get this error not only with startWaterTask i get and with others, and same error 14000 lines... one time per day.
Hello looking for info about two things.
when i use
ExternalLogin=true
CmdLineLogin=true
everything is working fine but:
1. strange arrangement of windows
2. the server name is in red, how can I change it?
Client: Classic 1.5 Age of Splendor
Question
wongerlt
L2J aCis.
Error:
Exception in thread "AISTPool-5" java.lang.StackOverflowError at net.sf.l2j.gameserver.model.actor.instance.L2PcInstance.startWaterTask(L2PcInstance.java:9109) at net.sf.l2j.gameserver.model.actor.instance.L2PcInstance.checkWaterState(L2PcInstance.java:9122) at net.sf.l2j.gameserver.model.actor.instance.L2PcInstance.revalidateZone(L2PcInstance.java:1540) at net.sf.l2j.gameserver.ai.L2CharacterAI.onEvtArrived(L2CharacterAI.java:626) at net.sf.l2j.gameserver.ai.AbstractAI.notifyEvent(AbstractAI.java:373) at net.sf.l2j.gameserver.ai.AbstractAI.notifyEvent(AbstractAI.java:296) at net.sf.l2j.gameserver.model.actor.L2Character.moveToLocation(L2Character.java:3586) at net.sf.l2j.gameserver.model.actor.L2Character$AIAccessor.moveTo(L2Character.java:2819) at net.sf.l2j.gameserver.ai.AbstractAI.moveTo(AbstractAI.java:538) at net.sf.l2j.gameserver.ai.AbstractAI.moveToPawn(AbstractAI.java:494) at net.sf.l2j.gameserver.ai.L2CharacterAI.maybeMoveToPawn(L2CharacterAI.java:877) at net.sf.l2j.gameserver.ai.L2PlayerAI.thinkCast(L2PlayerAI.java:235) at net.sf.l2j.gameserver.ai.L2PlayerAI.onEvtThink(L2PlayerAI.java:312) at net.sf.l2j.gameserver.ai.L2CharacterAI.onEvtArrived(L2CharacterAI.java:641) at net.sf.l2j.gameserver.ai.AbstractAI.notifyEvent(AbstractAI.java:373) at net.sf.l2j.gameserver.ai.AbstractAI.notifyEvent(AbstractAI.java:296) at net.sf.l2j.gameserver.model.actor.L2Character.moveToLocation(L2Character.java:3586) at net.sf.l2j.gameserver.model.actor.L2Character$AIAccessor.moveTo(L2Character.java:2819) at net.sf.l2j.gameserver.ai.AbstractAI.moveTo(AbstractAI.java:538) at net.sf.l2j.gameserver.ai.AbstractAI.moveToPawn(AbstractAI.java:494) at net.sf.l2j.gameserver.ai.L2CharacterAI.maybeMoveToPawn(L2CharacterAI.java:877) at net.sf.l2j.gameserver.ai.L2PlayerAI.thinkCast(L2PlayerAI.java:235) at net.sf.l2j.gameserver.ai.L2PlayerAI.onEvtThink(L2PlayerAI.java:312) at net.sf.l2j.gameserver.ai.L2CharacterAI.onEvtArrived(L2CharacterAI.java:641) at net.sf.l2j.gameserver.ai.AbstractAI.notifyEvent(AbstractAI.java:373) at net.sf.l2j.gameserver.ai.AbstractAI.notifyEvent(AbstractAI.java:296) and 100 same error like last blockL2Character.java:3586 i marked it with plus "+"
.... if (offset > 0 || distance < 1) { // approximation for moving closer when z coordinates are different // TODO: handle Z axis movement better offset -= Math.abs(dz); if (offset < 5) offset = 5; // If no distance to go through, the movement is canceled if (distance < 1 || distance - offset <= 0) { if (Config.DEBUG) _log.fine("already in range, no movement needed."); // Notify the AI that the L2Character is arrived at destination + getAI().notifyEvent(CtrlEvent.EVT_ARRIVED); return; } ....L2Character.java:2819
public void moveTo(int x, int y, int z, int offset) { + moveToLocation(x, y, z, offset); }AbstractAI.java:538
protected void moveTo(int x, int y, int z, int offset) { // Check if actor can move if (_actor.isMovementDisabled()) { _actor.sendPacket(ActionFailed.STATIC_PACKET); return; } // Set AI movement data _clientMoving = true; if (_accessor == null) return; // Calculate movement data for a move to location action and add the actor to + _accessor.moveTo(x, y, z, offset); if (!_actor.isMoving()) { _actor.sendPacket(ActionFailed.STATIC_PACKET); return; } // Send a Server->Client packet CharMoveToLocation to the actor and all L2PcInstance in _actor.broadcastPacket(new MoveToLocation(_actor)); }AbstractAI.java:494
protected void moveToPawn(L2Object pawn, int offset) { if (_clientMoving && _target == pawn && _actor.isOnGeodataPath() && GameTimeController.getGameTicks() < _moveToPawnTimeout) return; _target = pawn; if (_target == null) return; _moveToPawnTimeout = GameTimeController.getGameTicks() + 20; + moveTo(_target.getX(), _target.getY(), _target.getZ(), offset = offset < 10 ? 10 : offset); }L2CharacterAI.java:877
protected boolean maybeMoveToPawn(L2Object target, int offset) { if (target == null || offset < 0) // skill radius -1 return false; offset += _actor.getTemplate().getCollisionRadius(); if (target instanceof L2Character) offset += ((L2Character) target).getTemplate().getCollisionRadius(); if (!_actor.isInsideRadius(target, offset, false, false)) { if (getFollowTarget() != null) { int foffset = offset + (((L2Character) target).isMoving() ? 100 : 0); // allow larger hit range when the target is moving (check is run only once per second) if (!_actor.isInsideRadius(target, foffset, false, false)) { if (!_actor.isAttackingNow() || _actor instanceof L2Summon) + moveToPawn(target, offset); return true; } stopFollow(); return false; } if (_actor.isMovementDisabled() && !(_actor instanceof L2Attackable)) { if (getIntention() == CtrlIntention.ATTACK) setIntention(CtrlIntention.IDLE); return true; } // If not running, set the L2Character movement type to run and send Server->Client packet ChangeMoveType to all others L2PcInstance if (!(this instanceof L2PlayerAI) && !(this instanceof L2SummonAI)) _actor.setRunning(); if ((target instanceof L2Character) && !(target instanceof L2DoorInstance)) startFollow((L2Character) target, offset); else { // Move the actor to Pawn server side AND client side by sending Server->Client packet MoveToPawn (broadcast) moveToPawn(target, offset); } return true; } stopFollow(); return false; }L2PlayerAI.java:235
private void thinkCast() { L2Character target = (L2Character) getTarget(); if (Config.DEBUG) _log.warning("L2PlayerAI: thinkCast -> Start"); if (_skill.getTargetType() == SkillTargetType.TARGET_GROUND && _actor instanceof L2PcInstance) { if (maybeMoveToPosition(((L2PcInstance) _actor).getCurrentSkillWorldPosition(), _skill.getCastRange())) { _actor.setIsCastingNow(false); return; } } else { if (checkTargetLost(target)) { // Notify the target if (_skill.isOffensive() && getTarget() != null) setTarget(null); _actor.setIsCastingNow(false); return; } + if (target != null && maybeMoveToPawn(target, _skill.getCastRange())) { _actor.setIsCastingNow(false); return; } }L2PlayerAI.java:312
protected void onEvtThink() { // Check if the actor can't use skills and if a thinking action isn't already in progress if (_thinking && getIntention() != CtrlIntention.CAST) // casting must always continue return; // Start thinking action _thinking = true; try { // Manage AI thoughts switch (getIntention()) { case ATTACK: thinkAttack(); break; case CAST: + thinkCast(); break; case PICK_UP: thinkPickUp(); break; case INTERACT: thinkInteract(); break; } } finally { // Stop thinking action _thinking = false; } }L2CharacterAI.java:641
protected void onEvtArrived() { _accessor.getActor().revalidateZone(true); if (_accessor.getActor().moveToNextRoutePoint()) return; if (_accessor.getActor() instanceof L2Attackable) ((L2Attackable) _accessor.getActor()).setIsReturningToSpawnPoint(false); clientStoppedMoving(); // If the Intention was MOVE_TO, set the Intention to ACTIVE if (getIntention() == CtrlIntention.MOVE_TO) setIntention(CtrlIntention.ACTIVE); // Launch actions corresponding to the Event Think + onEvtThink(); }AbstractAI.java:373
AbstractAI.java:296
public final void notifyEvent(CtrlEvent evt) { + notifyEvent(evt, null, null); }i get this error not only with startWaterTask i get and with others, and same error 14000 lines... one time per day.
Maybe anyone know how to solve this problem?
23 answers to this question
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now