cleanup: replace anonymous inner class with lambda

This commit is contained in:
P0nk
2021-04-07 23:45:16 +02:00
parent 2d143d0afd
commit 6253169e35
65 changed files with 1204 additions and 2234 deletions

View File

@@ -21,56 +21,45 @@
*/
package scripting.event;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.HashMap;
import java.util.Map;
import java.util.HashSet;
import java.util.Set;
import java.util.Iterator;
import java.util.Properties;
import javax.script.ScriptException;
import client.MapleCharacter;
import client.Skill;
import client.SkillFactory;
import config.YamlConfig;
import constants.inventory.ItemConstants;
import constants.net.ServerConstants;
import net.server.audit.LockCollector;
import net.server.audit.locks.MonitoredLockType;
import net.server.audit.locks.MonitoredReentrantLock;
import net.server.audit.locks.MonitoredReadLock;
import net.server.audit.locks.MonitoredReentrantReadWriteLock;
import net.server.audit.locks.MonitoredWriteLock;
import net.server.audit.locks.*;
import net.server.audit.locks.factory.MonitoredReadLockFactory;
import net.server.audit.locks.factory.MonitoredReentrantLockFactory;
import net.server.audit.locks.factory.MonitoredWriteLockFactory;
import net.server.coordinator.world.MapleEventRecallCoordinator;
import net.server.world.MapleParty;
import net.server.world.MaplePartyCharacter;
import server.maps.MaplePortal;
import server.TimerManager;
import server.MapleStatEffect;
import server.expeditions.MapleExpedition;
import server.life.MapleMonster;
import server.maps.MapleMap;
import server.maps.MapleMapManager;
import server.maps.MapleReactor;
import client.MapleCharacter;
import client.SkillFactory;
import client.Skill;
import constants.inventory.ItemConstants;
import constants.net.ServerConstants;
import java.awt.Point;
import java.util.concurrent.ScheduledFuture;
import java.util.logging.Level;
import java.util.logging.Logger;
import net.server.coordinator.world.MapleEventRecallCoordinator;
import scripting.AbstractPlayerInteraction;
import scripting.event.scheduler.EventScriptScheduler;
import server.MapleItemInformationProvider;
import server.MapleStatEffect;
import server.ThreadManager;
import server.TimerManager;
import server.expeditions.MapleExpedition;
import server.life.MapleLifeFactory;
import server.life.MapleMonster;
import server.life.MapleNPC;
import server.maps.MapleMap;
import server.maps.MapleMapManager;
import server.maps.MaplePortal;
import server.maps.MapleReactor;
import tools.MaplePacketCreator;
import tools.Pair;
import javax.script.ScriptException;
import java.awt.*;
import java.util.List;
import java.util.*;
import java.util.concurrent.ScheduledFuture;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
*
* @author Matze
@@ -297,16 +286,13 @@ public class EventInstanceManager {
chr.announce(MaplePacketCreator.getClock((int) (time / 1000)));
}
event_schedule = TimerManager.getInstance().schedule(new Runnable() {
@Override
public void run() {
dismissEventTimer();
try {
invokeScriptFunction("scheduledTimeout", EventInstanceManager.this);
} catch (ScriptException | NoSuchMethodException ex) {
Logger.getLogger(EventManager.class.getName()).log(Level.SEVERE, "Event '" + em.getName() + "' does not implement scheduledTimeout function.", ex);
}
event_schedule = TimerManager.getInstance().schedule(() -> {
dismissEventTimer();
try {
invokeScriptFunction("scheduledTimeout", EventInstanceManager.this);
} catch (ScriptException | NoSuchMethodException ex) {
Logger.getLogger(EventManager.class.getName()).log(Level.SEVERE, "Event '" + em.getName() + "' does not implement scheduledTimeout function.", ex);
}
}, time);
}
@@ -317,16 +303,13 @@ public class EventInstanceManager {
long nextTime = getTimeLeft() + time;
eventTime += time;
event_schedule = TimerManager.getInstance().schedule(new Runnable() {
@Override
public void run() {
dismissEventTimer();
event_schedule = TimerManager.getInstance().schedule(() -> {
dismissEventTimer();
try {
invokeScriptFunction("scheduledTimeout", EventInstanceManager.this);
} catch (ScriptException | NoSuchMethodException ex) {
Logger.getLogger(EventManager.class.getName()).log(Level.SEVERE, "Event '" + em.getName() + "' does not implement scheduledTimeout function.", ex);
}
try {
invokeScriptFunction("scheduledTimeout", EventInstanceManager.this);
} catch (ScriptException | NoSuchMethodException ex) {
Logger.getLogger(EventManager.class.getName()).log(Level.SEVERE, "Event '" + em.getName() + "' does not implement scheduledTimeout function.", ex);
}
}, nextTime);
}
@@ -539,13 +522,10 @@ public class EventInstanceManager {
}
public void playerKilled(final MapleCharacter chr) {
ThreadManager.getInstance().newTask(new Runnable() {
@Override
public void run() {
try {
invokeScriptFunction("playerDead", EventInstanceManager.this, chr);
} catch (ScriptException | NoSuchMethodException ex) {} // optional
}
ThreadManager.getInstance().newTask(() -> {
try {
invokeScriptFunction("playerDead", EventInstanceManager.this, chr);
} catch (ScriptException | NoSuchMethodException ex) {} // optional
});
}
@@ -660,30 +640,22 @@ public class EventInstanceManager {
sL.unlock();
}
TimerManager.getInstance().schedule(new Runnable() {
@Override
public void run() {
mapManager.dispose(); // issues from instantly disposing some event objects found thanks to MedicOP
wL.lock();
try {
mapManager = null;
em = null;
} finally {
wL.unlock();
}
disposeLocks();
TimerManager.getInstance().schedule(() -> {
mapManager.dispose(); // issues from instantly disposing some event objects found thanks to MedicOP
wL.lock();
try {
mapManager = null;
em = null;
} finally {
wL.unlock();
}
disposeLocks();
}, 60 * 1000);
}
private void disposeLocks() {
LockCollector.getInstance().registerDisposeAction(new Runnable() {
@Override
public void run() {
emptyLocks();
}
});
LockCollector.getInstance().registerDisposeAction(() -> emptyLocks());
}
private void emptyLocks() {
@@ -699,14 +671,11 @@ public class EventInstanceManager {
rL.lock();
try {
if (ess != null) {
Runnable r = new Runnable() {
@Override
public void run() {
try {
invokeScriptFunction(methodName, EventInstanceManager.this);
} catch (ScriptException | NoSuchMethodException ex) {
ex.printStackTrace();
}
Runnable r = () -> {
try {
invokeScriptFunction(methodName, EventInstanceManager.this);
} catch (ScriptException | NoSuchMethodException ex) {
ex.printStackTrace();
}
};
@@ -1142,7 +1111,7 @@ public class EventInstanceManager {
if(!eventCleared && leavingEventMap && !isEventTeamLeaderOn()) return true;
if(getPlayerCount() < minPlayers) return true;
return false;
}
@@ -1153,7 +1122,7 @@ public class EventInstanceManager {
// thanks Conrad for noticing expeditions don't need to have neither the leader nor meet the minimum requirement inside the event
if(getPlayerCount() <= 1) return true;
}
return false;
}
@@ -1164,7 +1133,7 @@ public class EventInstanceManager {
if(leavingEventMap && getLeaderId() == quitter.getId()) return true;
if(getPlayerCount() <= minPlayers) return true;
}
return false;
}

View File

@@ -21,50 +21,39 @@
*/
package scripting.event;
import client.MapleCharacter;
import config.YamlConfig;
import constants.game.GameConstants;
import constants.net.ServerConstants;
import jdk.nashorn.api.scripting.NashornScriptEngine;
import jdk.nashorn.api.scripting.ScriptObjectMirror;
import jdk.nashorn.api.scripting.ScriptUtils;
import tools.exceptions.EventInstanceInProgressException;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.script.ScriptException;
import constants.net.ServerConstants;
import constants.game.GameConstants;
import client.MapleCharacter;
import net.server.Server;
import net.server.world.World;
import net.server.channel.Channel;
import net.server.guild.MapleGuild;
import net.server.world.MapleParty;
import net.server.world.MaplePartyCharacter;
import scripting.event.scheduler.EventScriptScheduler;
import server.MapleMarriage;
import server.expeditions.MapleExpedition;
import server.maps.MapleMap;
import server.life.MapleMonster;
import server.life.MapleLifeFactory;
import server.quest.MapleQuest;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.List;
import java.util.Queue;
import java.util.Set;
import java.util.concurrent.Semaphore;
import java.util.concurrent.TimeUnit;
import jdk.nashorn.api.scripting.NashornScriptEngine;
import net.server.audit.LockCollector;
import net.server.audit.locks.MonitoredLockType;
import net.server.audit.locks.MonitoredReentrantLock;
import net.server.audit.locks.factory.MonitoredReentrantLockFactory;
import net.server.channel.Channel;
import net.server.guild.MapleGuild;
import net.server.world.MapleParty;
import net.server.world.MaplePartyCharacter;
import net.server.world.World;
import scripting.event.scheduler.EventScriptScheduler;
import server.MapleMarriage;
import server.ThreadManager;
import server.expeditions.MapleExpedition;
import server.life.MapleLifeFactory;
import server.life.MapleMonster;
import server.maps.MapleMap;
import server.quest.MapleQuest;
import tools.exceptions.EventInstanceInProgressException;
import javax.script.ScriptException;
import java.util.*;
import java.util.concurrent.Semaphore;
import java.util.concurrent.TimeUnit;
import java.util.logging.Level;
import java.util.logging.Logger;
//import jdk.nashorn.api.scripting.ScriptUtils;
/**
@@ -154,12 +143,7 @@ public class EventManager {
}
private void disposeLocks() {
LockCollector.getInstance().registerDisposeAction(new Runnable() {
@Override
public void run() {
emptyLocks();
}
});
LockCollector.getInstance().registerDisposeAction(() -> emptyLocks());
}
private void emptyLocks() {
@@ -216,14 +200,11 @@ public class EventManager {
}
public EventScheduledFuture schedule(final String methodName, final EventInstanceManager eim, long delay) {
Runnable r = new Runnable() {
@Override
public void run() {
try {
iv.invokeFunction(methodName, eim);
} catch (ScriptException | NoSuchMethodException ex) {
Logger.getLogger(EventManager.class.getName()).log(Level.SEVERE, null, ex);
}
Runnable r = () -> {
try {
iv.invokeFunction(methodName, eim);
} catch (ScriptException | NoSuchMethodException ex) {
Logger.getLogger(EventManager.class.getName()).log(Level.SEVERE, null, ex);
}
};
@@ -234,14 +215,11 @@ public class EventManager {
}
public EventScheduledFuture scheduleAtTimestamp(final String methodName, long timestamp) {
Runnable r = new Runnable() {
@Override
public void run() {
try {
iv.invokeFunction(methodName, (Object) null);
} catch (ScriptException | NoSuchMethodException ex) {
Logger.getLogger(EventManager.class.getName()).log(Level.SEVERE, null, ex);
}
Runnable r = () -> {
try {
iv.invokeFunction(methodName, (Object) null);
} catch (ScriptException | NoSuchMethodException ex) {
Logger.getLogger(EventManager.class.getName()).log(Level.SEVERE, null, ex);
}
};
@@ -304,14 +282,11 @@ public class EventManager {
}
public void disposeInstance(final String name) {
ess.registerEntry(new Runnable() {
@Override
public void run() {
freeLobbyInstance(name);
synchronized (instances) {
instances.remove(name);
}
ess.registerEntry(() -> {
freeLobbyInstance(name);
synchronized (instances) {
instances.remove(name);
}
}, YamlConfig.config.server.EVENT_LOBBY_DELAY * 1000);
}

View File

@@ -20,19 +20,20 @@
package scripting.event.scheduler;
import config.YamlConfig;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.concurrent.ScheduledFuture;
import server.TimerManager;
import net.server.Server;
import net.server.audit.LockCollector;
import net.server.audit.locks.MonitoredLockType;
import net.server.audit.locks.MonitoredReentrantLock;
import net.server.audit.locks.factory.MonitoredReentrantLockFactory;
import server.ThreadManager;
import server.TimerManager;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.concurrent.ScheduledFuture;
/**
*
@@ -46,12 +47,7 @@ public class EventScriptScheduler {
private ScheduledFuture<?> schedulerTask = null;
private MonitoredReentrantLock schedulerLock;
private Runnable monitorTask = new Runnable() {
@Override
public void run() {
runBaseSchedule();
}
};
private Runnable monitorTask = () -> runBaseSchedule();
public EventScriptScheduler() {
schedulerLock = MonitoredReentrantLockFactory.createLock(MonitoredLockType.EM_SCHDL, true);
@@ -107,73 +103,59 @@ public class EventScriptScheduler {
public void registerEntry(final Runnable scheduledAction, final long duration) {
ThreadManager.getInstance().newTask(new Runnable() {
@Override
public void run() {
schedulerLock.lock();
try {
idleProcs = 0;
if (schedulerTask == null) {
if (disposed) {
return;
}
schedulerTask = TimerManager.getInstance().register(monitorTask, YamlConfig.config.server.MOB_STATUS_MONITOR_PROC, YamlConfig.config.server.MOB_STATUS_MONITOR_PROC);
ThreadManager.getInstance().newTask(() -> {
schedulerLock.lock();
try {
idleProcs = 0;
if (schedulerTask == null) {
if (disposed) {
return;
}
registeredEntries.put(scheduledAction, Server.getInstance().getCurrentTime() + duration);
} finally {
schedulerLock.unlock();
schedulerTask = TimerManager.getInstance().register(monitorTask, YamlConfig.config.server.MOB_STATUS_MONITOR_PROC, YamlConfig.config.server.MOB_STATUS_MONITOR_PROC);
}
registeredEntries.put(scheduledAction, Server.getInstance().getCurrentTime() + duration);
} finally {
schedulerLock.unlock();
}
});
}
public void cancelEntry(final Runnable scheduledAction) {
ThreadManager.getInstance().newTask(new Runnable() {
@Override
public void run() {
schedulerLock.lock();
try {
registeredEntries.remove(scheduledAction);
} finally {
schedulerLock.unlock();
}
ThreadManager.getInstance().newTask(() -> {
schedulerLock.lock();
try {
registeredEntries.remove(scheduledAction);
} finally {
schedulerLock.unlock();
}
});
}
public void dispose() {
ThreadManager.getInstance().newTask(new Runnable() {
@Override
public void run() {
schedulerLock.lock();
try {
if (schedulerTask != null) {
schedulerTask.cancel(false);
schedulerTask = null;
}
registeredEntries.clear();
disposed = true;
} finally {
schedulerLock.unlock();
ThreadManager.getInstance().newTask(() -> {
schedulerLock.lock();
try {
if (schedulerTask != null) {
schedulerTask.cancel(false);
schedulerTask = null;
}
disposeLocks();
registeredEntries.clear();
disposed = true;
} finally {
schedulerLock.unlock();
}
disposeLocks();
});
}
private void disposeLocks() {
LockCollector.getInstance().registerDisposeAction(new Runnable() {
@Override
public void run() {
emptyLocks();
}
});
LockCollector.getInstance().registerDisposeAction(() -> emptyLocks());
}
private void emptyLocks() {

View File

@@ -21,11 +21,17 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package scripting.npc;
import java.io.File;
import java.sql.SQLException;
import client.*;
import client.inventory.Item;
import client.inventory.ItemFactory;
import client.inventory.MaplePet;
import config.YamlConfig;
import constants.game.GameConstants;
import constants.inventory.ItemConstants;
import constants.string.LanguageConstants;
import net.server.Server;
import net.server.channel.Channel;
import net.server.coordinator.matchchecker.MatchCheckerListenerFactory.MatchCheckerType;
import net.server.guild.MapleAlliance;
import net.server.guild.MapleGuild;
import net.server.world.MapleParty;
@@ -33,57 +39,33 @@ import net.server.world.MaplePartyCharacter;
import provider.MapleData;
import provider.MapleDataProviderFactory;
import scripting.AbstractPlayerInteraction;
import server.MapleItemInformationProvider;
import server.MapleStatEffect;
import server.MapleShop;
import server.MapleShopFactory;
import server.*;
import server.MapleSkillbookInformationProvider.SkillBookEntry;
import server.events.gm.MapleEvent;
import server.expeditions.MapleExpedition;
import server.expeditions.MapleExpeditionType;
import server.gachapon.MapleGachapon;
import server.gachapon.MapleGachapon.MapleGachaponItem;
import server.life.MapleLifeFactory;
import server.life.MaplePlayerNPC;
import server.maps.MapleMap;
import server.maps.MapleMapManager;
import server.partyquest.Pyramid;
import server.partyquest.Pyramid.PyramidMode;
import tools.LogHelper;
import tools.MaplePacketCreator;
import client.MapleCharacter;
import client.MapleClient;
import client.MapleJob;
import client.MapleSkinColor;
import client.MapleStat;
import client.Skill;
import client.SkillFactory;
import client.inventory.Item;
import client.inventory.ItemFactory;
import client.inventory.MaplePet;
import constants.game.GameConstants;
import constants.inventory.ItemConstants;
import constants.string.LanguageConstants;
import net.server.channel.Channel;
import net.server.coordinator.matchchecker.MatchCheckerListenerFactory.MatchCheckerType;
import server.MapleMarriage;
import server.MapleSkillbookInformationProvider;
import server.MapleSkillbookInformationProvider.SkillBookEntry;
import server.TimerManager;
import server.life.MapleLifeFactory;
import server.maps.MapleMapObject;
import server.maps.MapleMapObjectType;
import server.expeditions.MapleExpedition;
import server.expeditions.MapleExpeditionType;
import server.partyquest.AriantColiseum;
import server.partyquest.MonsterCarnival;
import server.partyquest.Pyramid;
import server.partyquest.Pyramid.PyramidMode;
import tools.FilePrinter;
import tools.LogHelper;
import tools.MaplePacketCreator;
import tools.packets.Wedding;
import java.awt.Point;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.awt.*;
import java.io.File;
import java.sql.SQLException;
import java.util.List;
import java.util.Map;
import java.util.Set;
import tools.FilePrinter;
import java.util.*;
/**
*
@@ -697,19 +679,9 @@ public class NPCConversationManager extends AbstractPlayerInteraction {
mc.changeMap(map, map.getPortal(0));
mc.announce(MaplePacketCreator.serverNotice(6, LanguageConstants.getMessage(mc, LanguageConstants.CPQEntryLobby)));
TimerManager tMan = TimerManager.getInstance();
tMan.schedule(new Runnable() {
@Override
public void run() {
mapClock(3 * 60);
}
}, 1500);
tMan.schedule(() -> mapClock(3 * 60), 1500);
mc.setCpqTimer(TimerManager.getInstance().schedule(new Runnable() {
@Override
public void run() {
mc.changeMap(mapExit, mapExit.getPortal(0));
}
}, 3 * 60 * 1000));
mc.setCpqTimer(TimerManager.getInstance().schedule(() -> mc.changeMap(mapExit, mapExit.getPortal(0)), 3 * 60 * 1000));
}
}
} catch (Exception ex) {
@@ -794,57 +766,44 @@ public class NPCConversationManager extends AbstractPlayerInteraction {
if (mc != null) {
mc.changeMap(lobbyMap, lobbyMap.getPortal(0));
TimerManager tMan = TimerManager.getInstance();
tMan.schedule(new Runnable() {
@Override
public void run() {
mapClock(10);
}
}, 1500);
tMan.schedule(() -> mapClock(10), 1500);
}
}
for (MaplePartyCharacter mpc : getPlayer().getParty().getMembers()) {
MapleCharacter mc = mpc.getPlayer();
if (mc != null) {
TimerManager tMan = TimerManager.getInstance();
tMan.schedule(new Runnable() {
@Override
public void run() {
mapClock(10);
}
}, 1500);
tMan.schedule(() -> mapClock(10), 1500);
}
}
}
final int mapid = c.getPlayer().getMapId() + 1;
TimerManager tMan = TimerManager.getInstance();
tMan.schedule(new Runnable() {
@Override
public void run() {
try {
for (MaplePartyCharacter mpc : getPlayer().getParty().getMembers()) {
MapleCharacter mc = mpc.getPlayer();
if (mc != null) {
mc.setMonsterCarnival(null);
}
tMan.schedule(() -> {
try {
for (MaplePartyCharacter mpc : getPlayer().getParty().getMembers()) {
MapleCharacter mc = mpc.getPlayer();
if (mc != null) {
mc.setMonsterCarnival(null);
}
for (MaplePartyCharacter mpc : challenger.getParty().getMembers()) {
MapleCharacter mc = mpc.getPlayer();
if (mc != null) {
mc.setMonsterCarnival(null);
}
}
for (MaplePartyCharacter mpc : challenger.getParty().getMembers()) {
MapleCharacter mc = mpc.getPlayer();
if (mc != null) {
mc.setMonsterCarnival(null);
}
} catch (NullPointerException npe) {
warpoutCPQLobby(lobbyMap);
return;
}
MapleParty lobbyParty = getPlayer().getParty(), challengerParty = challenger.getParty();
int status = canStartCPQ(lobbyMap, lobbyParty, challengerParty);
if (status == 0) {
new MonsterCarnival(lobbyParty, challengerParty, mapid, true, (field / 100) % 10);
} else {
warpoutCPQLobby(lobbyMap);
}
} catch (NullPointerException npe) {
warpoutCPQLobby(lobbyMap);
return;
}
MapleParty lobbyParty = getPlayer().getParty(), challengerParty = challenger.getParty();
int status = canStartCPQ(lobbyMap, lobbyParty, challengerParty);
if (status == 0) {
new MonsterCarnival(lobbyParty, challengerParty, mapid, true, (field / 100) % 10);
} else {
warpoutCPQLobby(lobbyMap);
}
}, 11000);
} catch (Exception e) {
@@ -872,34 +831,31 @@ public class NPCConversationManager extends AbstractPlayerInteraction {
}
final int mapid = c.getPlayer().getMapId() + 100;
TimerManager tMan = TimerManager.getInstance();
tMan.schedule(new Runnable() {
@Override
public void run() {
try {
for (MaplePartyCharacter mpc : getPlayer().getParty().getMembers()) {
MapleCharacter mc = mpc.getPlayer();
if (mc != null) {
mc.setMonsterCarnival(null);
}
tMan.schedule(() -> {
try {
for (MaplePartyCharacter mpc : getPlayer().getParty().getMembers()) {
MapleCharacter mc = mpc.getPlayer();
if (mc != null) {
mc.setMonsterCarnival(null);
}
for (MaplePartyCharacter mpc : challenger.getParty().getMembers()) {
MapleCharacter mc = mpc.getPlayer();
if (mc != null) {
mc.setMonsterCarnival(null);
}
}
for (MaplePartyCharacter mpc : challenger.getParty().getMembers()) {
MapleCharacter mc = mpc.getPlayer();
if (mc != null) {
mc.setMonsterCarnival(null);
}
} catch (NullPointerException npe) {
warpoutCPQLobby(lobbyMap);
return;
}
MapleParty lobbyParty = getPlayer().getParty(), challengerParty = challenger.getParty();
int status = canStartCPQ(lobbyMap, lobbyParty, challengerParty);
if (status == 0) {
new MonsterCarnival(lobbyParty, challengerParty, mapid, false, (field / 1000) % 10);
} else {
warpoutCPQLobby(lobbyMap);
}
} catch (NullPointerException npe) {
warpoutCPQLobby(lobbyMap);
return;
}
MapleParty lobbyParty = getPlayer().getParty(), challengerParty = challenger.getParty();
int status = canStartCPQ(lobbyMap, lobbyParty, challengerParty);
if (status == 0) {
new MonsterCarnival(lobbyParty, challengerParty, mapid, false, (field / 1000) % 10);
} else {
warpoutCPQLobby(lobbyMap);
}
}, 10000);
} catch (Exception e) {
@@ -972,19 +928,9 @@ public class NPCConversationManager extends AbstractPlayerInteraction {
mc.changeMap(map, map.getPortal(0));
mc.announce(MaplePacketCreator.serverNotice(6, LanguageConstants.getMessage(mc, LanguageConstants.CPQEntryLobby)));
TimerManager tMan = TimerManager.getInstance();
tMan.schedule(new Runnable() {
@Override
public void run() {
mapClock(3 * 60);
}
}, 1500);
tMan.schedule(() -> mapClock(3 * 60), 1500);
mc.setCpqTimer(TimerManager.getInstance().schedule(new Runnable() {
@Override
public void run() {
mc.changeMap(mapExit, mapExit.getPortal(0));
}
}, 3 * 60 * 1000));
mc.setCpqTimer(TimerManager.getInstance().schedule(() -> mc.changeMap(mapExit, mapExit.getPortal(0)), 3 * 60 * 1000));
}
}
} catch (Exception ex) {

View File

@@ -28,14 +28,6 @@ import client.inventory.Item;
import client.inventory.MapleInventoryType;
import config.YamlConfig;
import constants.inventory.ItemConstants;
import java.awt.Point;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.concurrent.ScheduledFuture;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.script.ScriptException;
import jdk.nashorn.api.scripting.NashornScriptEngine;
import scripting.AbstractPlayerInteraction;
import scripting.event.EventInstanceManager;
@@ -52,6 +44,15 @@ import server.partyquest.MapleCarnivalFactory;
import server.partyquest.MapleCarnivalFactory.MCSkill;
import tools.MaplePacketCreator;
import javax.script.ScriptException;
import java.awt.*;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.concurrent.ScheduledFuture;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
* @author Lerk
* @author Ronan
@@ -195,35 +196,32 @@ public class ReactorActionManager extends AbstractPlayerInteraction {
dropPos.x -= (12 * items.size());
sprayTask = TimerManager.getInstance().register(new Runnable() {
@Override
public void run() {
if(dropItems.isEmpty()) {
sprayTask.cancel(false);
return;
}
ReactorDropEntry d = dropItems.remove(0);
if (d.itemId == 0) {
int range = maxMeso - minMeso;
int displayDrop = (int) (Math.random() * range) + minMeso;
int mesoDrop = (displayDrop * worldMesoRate);
r.getMap().spawnMesoDrop(mesoDrop, r.getMap().calcDropPos(dropPos, r.getPosition()), r, chr, false, (byte) 2);
} else {
Item drop;
if (ItemConstants.getInventoryType(d.itemId) != MapleInventoryType.EQUIP) {
drop = new Item(d.itemId, (short) 0, (short) 1);
} else {
MapleItemInformationProvider ii = MapleItemInformationProvider.getInstance();
drop = ii.randomizeStats((Equip) ii.getEquipById(d.itemId));
}
r.getMap().dropFromReactor(getPlayer(), r, drop, dropPos, (short) d.questid);
}
dropPos.x += 25;
sprayTask = TimerManager.getInstance().register(() -> {
if(dropItems.isEmpty()) {
sprayTask.cancel(false);
return;
}
ReactorDropEntry d = dropItems.remove(0);
if (d.itemId == 0) {
int range = maxMeso - minMeso;
int displayDrop = (int) (Math.random() * range) + minMeso;
int mesoDrop = (displayDrop * worldMesoRate);
r.getMap().spawnMesoDrop(mesoDrop, r.getMap().calcDropPos(dropPos, r.getPosition()), r, chr, false, (byte) 2);
} else {
Item drop;
if (ItemConstants.getInventoryType(d.itemId) != MapleInventoryType.EQUIP) {
drop = new Item(d.itemId, (short) 0, (short) 1);
} else {
MapleItemInformationProvider ii = MapleItemInformationProvider.getInstance();
drop = ii.randomizeStats((Equip) ii.getEquipById(d.itemId));
}
r.getMap().dropFromReactor(getPlayer(), r, drop, dropPos, (short) d.questid);
}
dropPos.x += 25;
}, 200);
}
}
@@ -319,27 +317,21 @@ public class ReactorActionManager extends AbstractPlayerInteraction {
}
public ScheduledFuture<?> schedule(final String methodName, final EventInstanceManager eim, long delay) {
return TimerManager.getInstance().schedule(new Runnable() {
@Override
public void run() {
try {
iv.invokeFunction(methodName, eim);
} catch (ScriptException | NoSuchMethodException ex) {
Logger.getLogger(EventManager.class.getName()).log(Level.SEVERE, null, ex);
}
return TimerManager.getInstance().schedule(() -> {
try {
iv.invokeFunction(methodName, eim);
} catch (ScriptException | NoSuchMethodException ex) {
Logger.getLogger(EventManager.class.getName()).log(Level.SEVERE, null, ex);
}
}, delay);
}
public ScheduledFuture<?> scheduleAtTimestamp(final String methodName, long timestamp) {
return TimerManager.getInstance().scheduleAtTimestamp(new Runnable() {
@Override
public void run() {
try {
iv.invokeFunction(methodName, (Object) null);
} catch (ScriptException | NoSuchMethodException ex) {
Logger.getLogger(EventManager.class.getName()).log(Level.SEVERE, null, ex);
}
return TimerManager.getInstance().scheduleAtTimestamp(() -> {
try {
iv.invokeFunction(methodName, (Object) null);
} catch (ScriptException | NoSuchMethodException ex) {
Logger.getLogger(EventManager.class.getName()).log(Level.SEVERE, null, ex);
}
}, timestamp);
}