Implemented an improved scheduler system for channels, on where Runnables objects are "registered in" to run on a scheduled future time (effective run time will depend on the proc time of the worker acting under-the-hood). Implemented a channel scheduler for detecting "mobs currently on animation state". This allows the server to send info to the client about whether a mob should cast a skill or not at that moment. Improved concurrent protection on MapleMonster listeners registry. Improved resource deallocation when destroying a monster object. Added a server flag to allow clean slates to be used on equipments even on the "only successfully used scroll slots" case. Fixed a critical deadlock case with MapleServerHandler. Added the portal SFX for many scripted portals that still lacked the sound effect.
41 lines
1.3 KiB
Java
41 lines
1.3 KiB
Java
/*
|
|
This file is part of the HeavenMS MapleStory Server
|
|
Copyleft 2016 - 2018 RonanLana
|
|
|
|
This program is free software: you can redistribute it and/or modify
|
|
it under the terms of the GNU Affero General Public License as
|
|
published by the Free Software Foundation version 3 as published by
|
|
the Free Software Foundation. You may not use, modify or distribute
|
|
this program under any other version of the GNU Affero General Public
|
|
License.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU Affero General Public License for more details.
|
|
|
|
You should have received a copy of the GNU Affero General Public License
|
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
*/
|
|
package net.server.channel.worker;
|
|
|
|
import tools.locks.MonitoredLockType;
|
|
|
|
/**
|
|
*
|
|
* @author Ronan
|
|
*/
|
|
public class OverallScheduler extends BaseScheduler {
|
|
public OverallScheduler() {
|
|
super(MonitoredLockType.CHANNEL_OVERALL);
|
|
}
|
|
|
|
public void registerDelayedAction(Runnable runAction, long delay) {
|
|
registerEntry(runAction, runAction, delay);
|
|
}
|
|
|
|
public void forceRunDelayedAction(Runnable runAction) {
|
|
interruptEntry(runAction);
|
|
}
|
|
}
|