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

@@ -233,16 +233,13 @@ public class MapleStorage {
lock.lock();
try {
Collections.sort(items, new Comparator<Item>() {
@Override
public int compare(Item o1, Item o2) {
if (o1.getInventoryType().getType() < o2.getInventoryType().getType()) {
return -1;
} else if (o1.getInventoryType() == o2.getInventoryType()) {
return 0;
}
return 1;
Collections.sort(items, (o1, o2) -> {
if (o1.getInventoryType().getType() < o2.getInventoryType().getType()) {
return -1;
} else if (o1.getInventoryType() == o2.getInventoryType()) {
return 0;
}
return 1;
});
List<Item> storageItems = getItems();

View File

@@ -21,16 +21,17 @@
*/
package server;
import net.server.Server;
import tools.FilePrinter;
import javax.management.MBeanServer;
import javax.management.ObjectName;
import java.lang.management.ManagementFactory;
import java.util.concurrent.ScheduledFuture;
import java.util.concurrent.ScheduledThreadPoolExecutor;
import java.util.concurrent.ThreadFactory;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicInteger;
import net.server.Server;
import javax.management.MBeanServer;
import javax.management.ObjectName;
import tools.FilePrinter;
public class TimerManager implements TimerManagerMBean {
private static TimerManager instance = new TimerManager();
@@ -79,12 +80,9 @@ public class TimerManager implements TimerManagerMBean {
}
public Runnable purge() {//Yay?
return new Runnable() {
@Override
public void run() {
Server.getInstance().forceUpdateCurrentTime();
ses.purge();
}
return () -> {
Server.getInstance().forceUpdateCurrentTime();
ses.purge();
};
}

View File

@@ -23,13 +23,14 @@
package server.events.gm;
import client.MapleCharacter;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import server.TimerManager;
import server.maps.MapleMap;
import tools.MaplePacketCreator;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
/**
*
* @author kevintjuh93
@@ -58,35 +59,32 @@ public class MapleCoconut extends MapleEvent {
setCoconutsHittable(true);
map.broadcastMessage(MaplePacketCreator.getClock(300));
TimerManager.getInstance().schedule(new Runnable() {
@Override
public void run() {
if (map.getId() == 109080000) {
if (getMapleScore() == getStoryScore()) {
bonusTime();
} else if (getMapleScore() > getStoryScore()) {
for (MapleCharacter chr : map.getCharacters()) {
if (chr.getTeam() == 0) {
chr.getClient().announce(MaplePacketCreator.showEffect("event/coconut/victory"));
chr.getClient().announce(MaplePacketCreator.playSound("Coconut/Victory"));
} else {
chr.getClient().announce(MaplePacketCreator.showEffect("event/coconut/lose"));
chr.getClient().announce(MaplePacketCreator.playSound("Coconut/Failed"));
}
TimerManager.getInstance().schedule(() -> {
if (map.getId() == 109080000) {
if (getMapleScore() == getStoryScore()) {
bonusTime();
} else if (getMapleScore() > getStoryScore()) {
for (MapleCharacter chr : map.getCharacters()) {
if (chr.getTeam() == 0) {
chr.getClient().announce(MaplePacketCreator.showEffect("event/coconut/victory"));
chr.getClient().announce(MaplePacketCreator.playSound("Coconut/Victory"));
} else {
chr.getClient().announce(MaplePacketCreator.showEffect("event/coconut/lose"));
chr.getClient().announce(MaplePacketCreator.playSound("Coconut/Failed"));
}
warpOut();
} else {
for (MapleCharacter chr : map.getCharacters()) {
if (chr.getTeam() == 1) {
chr.getClient().announce(MaplePacketCreator.showEffect("event/coconut/victory"));
chr.getClient().announce(MaplePacketCreator.playSound("Coconut/Victory"));
} else {
chr.getClient().announce(MaplePacketCreator.showEffect("event/coconut/lose"));
chr.getClient().announce(MaplePacketCreator.playSound("Coconut/Failed"));
}
}
warpOut();
}
warpOut();
} else {
for (MapleCharacter chr : map.getCharacters()) {
if (chr.getTeam() == 1) {
chr.getClient().announce(MaplePacketCreator.showEffect("event/coconut/victory"));
chr.getClient().announce(MaplePacketCreator.playSound("Coconut/Victory"));
} else {
chr.getClient().announce(MaplePacketCreator.showEffect("event/coconut/lose"));
chr.getClient().announce(MaplePacketCreator.playSound("Coconut/Failed"));
}
}
warpOut();
}
}
}, 300000);
@@ -94,59 +92,53 @@ public class MapleCoconut extends MapleEvent {
public void bonusTime() {
map.broadcastMessage(MaplePacketCreator.getClock(120));
TimerManager.getInstance().schedule(new Runnable() {
@Override
public void run() {
if (getMapleScore() == getStoryScore()) {
TimerManager.getInstance().schedule(() -> {
if (getMapleScore() == getStoryScore()) {
for (MapleCharacter chr : map.getCharacters()) {
chr.getClient().announce(MaplePacketCreator.showEffect("event/coconut/lose"));
chr.getClient().announce(MaplePacketCreator.playSound("Coconut/Failed"));
}
warpOut();
} else if (getMapleScore() > getStoryScore()) {
for (MapleCharacter chr : map.getCharacters()) {
chr.getClient().announce(MaplePacketCreator.showEffect("event/coconut/lose"));
chr.getClient().announce(MaplePacketCreator.playSound("Coconut/Failed"));
if (chr.getTeam() == 0) {
chr.getClient().announce(MaplePacketCreator.showEffect("event/coconut/victory"));
chr.getClient().announce(MaplePacketCreator.playSound("Coconut/Victory"));
} else {
chr.getClient().announce(MaplePacketCreator.showEffect("event/coconut/lose"));
chr.getClient().announce(MaplePacketCreator.playSound("Coconut/Failed"));
}
}
warpOut();
} else if (getMapleScore() > getStoryScore()) {
for (MapleCharacter chr : map.getCharacters()) {
if (chr.getTeam() == 0) {
chr.getClient().announce(MaplePacketCreator.showEffect("event/coconut/victory"));
chr.getClient().announce(MaplePacketCreator.playSound("Coconut/Victory"));
} else {
chr.getClient().announce(MaplePacketCreator.showEffect("event/coconut/lose"));
chr.getClient().announce(MaplePacketCreator.playSound("Coconut/Failed"));
}
} else {
for (MapleCharacter chr : map.getCharacters()) {
if (chr.getTeam() == 1) {
chr.getClient().announce(MaplePacketCreator.showEffect("event/coconut/victory"));
chr.getClient().announce(MaplePacketCreator.playSound("Coconut/Victory"));
} else {
chr.getClient().announce(MaplePacketCreator.showEffect("event/coconut/lose"));
chr.getClient().announce(MaplePacketCreator.playSound("Coconut/Failed"));
}
warpOut();
} else {
for (MapleCharacter chr : map.getCharacters()) {
if (chr.getTeam() == 1) {
chr.getClient().announce(MaplePacketCreator.showEffect("event/coconut/victory"));
chr.getClient().announce(MaplePacketCreator.playSound("Coconut/Victory"));
} else {
chr.getClient().announce(MaplePacketCreator.showEffect("event/coconut/lose"));
chr.getClient().announce(MaplePacketCreator.playSound("Coconut/Failed"));
}
}
warpOut();
}
}
warpOut();
}
}, 120000);
}
public void warpOut() {
setCoconutsHittable(false);
TimerManager.getInstance().schedule(new Runnable() {
@Override
public void run() {
List<MapleCharacter> chars = new ArrayList<>(map.getCharacters());
for (MapleCharacter chr : chars) {
if ((getMapleScore() > getStoryScore() && chr.getTeam() == 0) || (getStoryScore() > getMapleScore() && chr.getTeam() == 1)) {
chr.changeMap(109050000);
} else {
chr.changeMap(109050001);
}
}
map.setCoconut(null);
TimerManager.getInstance().schedule(() -> {
List<MapleCharacter> chars = new ArrayList<>(map.getCharacters());
for (MapleCharacter chr : chars) {
if ((getMapleScore() > getStoryScore() && chr.getTeam() == 0) || (getStoryScore() > getMapleScore() && chr.getTeam() == 1)) {
chr.changeMap(109050000);
} else {
chr.changeMap(109050001);
}
}
map.setCoconut(null);
}, 12000);
}

View File

@@ -23,10 +23,11 @@
package server.events.gm;
import client.MapleCharacter;
import java.util.concurrent.ScheduledFuture;
import server.TimerManager;
import tools.MaplePacketCreator;
import java.util.concurrent.ScheduledFuture;
/**
*
* @author kevintjuh93
@@ -40,12 +41,9 @@ public class MapleFitness {
public MapleFitness(final MapleCharacter chr) {
this.chr = chr;
this.schedule = TimerManager.getInstance().schedule(new Runnable() {
@Override
public void run() {
if (chr.getMapId() >= 109040000 && chr.getMapId() <= 109040004)
chr.changeMap(chr.getMap().getReturnMap());
}
this.schedule = TimerManager.getInstance().schedule(() -> {
if (chr.getMapId() >= 109040000 && chr.getMapId() <= 109040004)
chr.changeMap(chr.getMap().getReturnMap());
}, 900000);
}
@@ -80,42 +78,39 @@ public class MapleFitness {
}
public void checkAndMessage() {
this.schedulemsg = TimerManager.getInstance().register(new Runnable() {
@Override
public void run() {
if (chr.getFitness() == null) {
resetTimes();
}
if (chr.getMap().getId() >= 109040000 && chr.getMap().getId() <= 109040004) {
if (getTimeLeft() > 9000 && getTimeLeft() < 11000) {
chr.getClient().announce(MaplePacketCreator.serverNotice(0, "You have 10 sec left. Those of you unable to beat the game, we hope you beat it next time! Great job everyone!! See you later~"));
} else if (getTimeLeft() > 99000 && getTimeLeft() < 101000) {
chr.getClient().announce(MaplePacketCreator.serverNotice(0, "Alright, you don't have much time remaining. Please hurry up a little!"));
} else if (getTimeLeft() > 239000 && getTimeLeft() < 241000) {
chr.getClient().announce(MaplePacketCreator.serverNotice(0, "The 4th stage is the last one for [The Maple Physical Fitness Test]. Please don't give up at the last minute and try your best. The reward is waiting for you at the very top!"));
} else if (getTimeLeft() > 299000 && getTimeLeft() < 301000) {
chr.getClient().announce(MaplePacketCreator.serverNotice(0, "The 3rd stage offers traps where you may see them, but you won't be able to step on them. Please be careful of them as you make your way up."));
} else if (getTimeLeft() > 359000 && getTimeLeft() < 361000) {
chr.getClient().announce(MaplePacketCreator.serverNotice(0, "For those who have heavy lags, please make sure to move slowly to avoid falling all the way down because of lags."));
} else if (getTimeLeft() > 499000 && getTimeLeft() < 501000) {
chr.getClient().announce(MaplePacketCreator.serverNotice(0, "Please remember that if you die during the event, you'll be eliminated from the game. If you're running out of HP, either take a potion or recover HP first before moving on."));
} else if (getTimeLeft() > 599000 && getTimeLeft() < 601000) {
chr.getClient().announce(MaplePacketCreator.serverNotice(0, "The most important thing you'll need to know to avoid the bananas thrown by the monkeys is *Timing* Timing is everything in this!"));
} else if (getTimeLeft() > 659000 && getTimeLeft() < 661000) {
chr.getClient().announce(MaplePacketCreator.serverNotice(0, "The 2nd stage offers monkeys throwing bananas. Please make sure to avoid them by moving along at just the right timing."));
} else if (getTimeLeft() > 699000 && getTimeLeft() < 701000) {
chr.getClient().announce(MaplePacketCreator.serverNotice(0, "Please remember that if you die during the event, you'll be eliminated from the game. You still have plenty of time left, so either take a potion or recover HP first before moving on."));
} else if (getTimeLeft() > 779000 && getTimeLeft() < 781000) {
chr.getClient().announce(MaplePacketCreator.serverNotice(0, "Everyone that clears [The Maple Physical Fitness Test] on time will be given an item, regardless of the order of finish, so just relax, take your time, and clear the 4 stages."));
} else if (getTimeLeft() > 839000 && getTimeLeft() < 841000) {
chr.getClient().announce(MaplePacketCreator.serverNotice(0, "There may be a heavy lag due to many users at stage 1 all at once. It won't be difficult, so please make sure not to fall down because of heavy lag."));
} else if (getTimeLeft() > 869000 && getTimeLeft() < 871000) {
chr.getClient().announce(MaplePacketCreator.serverNotice(0, "[MapleStory Physical Fitness Test] consists of 4 stages, and if you happen to die during the game, you'll be eliminated from the game, so please be careful of that."));
}
} else {
resetTimes();
}
this.schedulemsg = TimerManager.getInstance().register(() -> {
if (chr.getFitness() == null) {
resetTimes();
}
if (chr.getMap().getId() >= 109040000 && chr.getMap().getId() <= 109040004) {
if (getTimeLeft() > 9000 && getTimeLeft() < 11000) {
chr.getClient().announce(MaplePacketCreator.serverNotice(0, "You have 10 sec left. Those of you unable to beat the game, we hope you beat it next time! Great job everyone!! See you later~"));
} else if (getTimeLeft() > 99000 && getTimeLeft() < 101000) {
chr.getClient().announce(MaplePacketCreator.serverNotice(0, "Alright, you don't have much time remaining. Please hurry up a little!"));
} else if (getTimeLeft() > 239000 && getTimeLeft() < 241000) {
chr.getClient().announce(MaplePacketCreator.serverNotice(0, "The 4th stage is the last one for [The Maple Physical Fitness Test]. Please don't give up at the last minute and try your best. The reward is waiting for you at the very top!"));
} else if (getTimeLeft() > 299000 && getTimeLeft() < 301000) {
chr.getClient().announce(MaplePacketCreator.serverNotice(0, "The 3rd stage offers traps where you may see them, but you won't be able to step on them. Please be careful of them as you make your way up."));
} else if (getTimeLeft() > 359000 && getTimeLeft() < 361000) {
chr.getClient().announce(MaplePacketCreator.serverNotice(0, "For those who have heavy lags, please make sure to move slowly to avoid falling all the way down because of lags."));
} else if (getTimeLeft() > 499000 && getTimeLeft() < 501000) {
chr.getClient().announce(MaplePacketCreator.serverNotice(0, "Please remember that if you die during the event, you'll be eliminated from the game. If you're running out of HP, either take a potion or recover HP first before moving on."));
} else if (getTimeLeft() > 599000 && getTimeLeft() < 601000) {
chr.getClient().announce(MaplePacketCreator.serverNotice(0, "The most important thing you'll need to know to avoid the bananas thrown by the monkeys is *Timing* Timing is everything in this!"));
} else if (getTimeLeft() > 659000 && getTimeLeft() < 661000) {
chr.getClient().announce(MaplePacketCreator.serverNotice(0, "The 2nd stage offers monkeys throwing bananas. Please make sure to avoid them by moving along at just the right timing."));
} else if (getTimeLeft() > 699000 && getTimeLeft() < 701000) {
chr.getClient().announce(MaplePacketCreator.serverNotice(0, "Please remember that if you die during the event, you'll be eliminated from the game. You still have plenty of time left, so either take a potion or recover HP first before moving on."));
} else if (getTimeLeft() > 779000 && getTimeLeft() < 781000) {
chr.getClient().announce(MaplePacketCreator.serverNotice(0, "Everyone that clears [The Maple Physical Fitness Test] on time will be given an item, regardless of the order of finish, so just relax, take your time, and clear the 4 stages."));
} else if (getTimeLeft() > 839000 && getTimeLeft() < 841000) {
chr.getClient().announce(MaplePacketCreator.serverNotice(0, "There may be a heavy lag due to many users at stage 1 all at once. It won't be difficult, so please make sure not to fall down because of heavy lag."));
} else if (getTimeLeft() > 869000 && getTimeLeft() < 871000) {
chr.getClient().announce(MaplePacketCreator.serverNotice(0, "[MapleStory Physical Fitness Test] consists of 4 stages, and if you happen to die during the game, you'll be eliminated from the game, so please be careful of that."));
}
} else {
resetTimes();
}
}, 5000, 29500);
}
// 14:30 [Notice][MapleStory Physical Fitness Test] consists of 4 stages, and if you happen to die during the game, you'll be eliminated from the game, so please be careful of that.

View File

@@ -22,10 +22,11 @@
package server.events.gm;
import client.MapleCharacter;
import java.util.concurrent.ScheduledFuture;
import server.TimerManager;
import tools.MaplePacketCreator;
import java.util.concurrent.ScheduledFuture;
/**
*
* @author kevintjuh93
@@ -38,13 +39,10 @@ public class MapleOla {
public MapleOla(final MapleCharacter chr) {
this.chr = chr;
this.schedule = TimerManager.getInstance().schedule(new Runnable() {
@Override
public void run() {
if (chr.getMapId() >= 109030001 && chr.getMapId() <= 109030303)
chr.changeMap(chr.getMap().getReturnMap());
resetTimes();
}
this.schedule = TimerManager.getInstance().schedule(() -> {
if (chr.getMapId() >= 109030001 && chr.getMapId() <= 109030303)
chr.changeMap(chr.getMap().getReturnMap());
resetTimes();
}, 360000);
}

View File

@@ -22,16 +22,17 @@
package server.events.gm;
import client.MapleCharacter;
import tools.Randomizer;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import provider.MapleDataProvider;
import provider.MapleDataProviderFactory;
import provider.MapleDataTool;
import server.TimerManager;
import server.maps.MapleMap;
import tools.MaplePacketCreator;
import tools.Randomizer;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
/**
*
@@ -69,39 +70,36 @@ public final class MapleOxQuiz {
}
final int number = gm;
map.broadcastMessage(MaplePacketCreator.showOXQuiz(round, question, true));
TimerManager.getInstance().schedule(new Runnable() {
@Override
public void run() {
map.broadcastMessage(MaplePacketCreator.showOXQuiz(round, question, true));
List<MapleCharacter> chars = new ArrayList<>(map.getCharacters());
for (MapleCharacter chr : chars) {
if (chr != null) // make sure they aren't null... maybe something can happen in 12 seconds.
{
if (!isCorrectAnswer(chr, getOXAnswer(round, question)) && !chr.isGM()) {
chr.changeMap(chr.getMap().getReturnMap());
} else {
chr.gainExp(expGain, true, true);
}
TimerManager.getInstance().schedule(() -> {
map.broadcastMessage(MaplePacketCreator.showOXQuiz(round, question, true));
List<MapleCharacter> chars = new ArrayList<>(map.getCharacters());
for (MapleCharacter chr : chars) {
if (chr != null) // make sure they aren't null... maybe something can happen in 12 seconds.
{
if (!isCorrectAnswer(chr, getOXAnswer(round, question)) && !chr.isGM()) {
chr.changeMap(chr.getMap().getReturnMap());
} else {
chr.gainExp(expGain, true, true);
}
}
//do question
if ((round == 1 && question == 29) || ((round == 2 || round == 3) && question == 17) || ((round == 4 || round == 8) && question == 12) || (round == 5 && question == 26) || (round == 9 && question == 44) || ((round == 6 || round == 7) && question == 16)) {
question = 100;
} else {
question++;
}
//send question
if (map.getCharacters().size() - number <= 2) {
map.broadcastMessage(MaplePacketCreator.serverNotice(6, "The event has ended"));
map.getPortal("join00").setPortalStatus(true);
map.setOx(null);
map.setOxQuiz(false);
//prizes here
return;
}
sendQuestion();
}
//do question
if ((round == 1 && question == 29) || ((round == 2 || round == 3) && question == 17) || ((round == 4 || round == 8) && question == 12) || (round == 5 && question == 26) || (round == 9 && question == 44) || ((round == 6 || round == 7) && question == 16)) {
question = 100;
} else {
question++;
}
//send question
if (map.getCharacters().size() - number <= 2) {
map.broadcastMessage(MaplePacketCreator.serverNotice(6, "The event has ended"));
map.getPortal("join00").setPortalStatus(true);
map.setOx(null);
map.setOxQuiz(false);
//prizes here
return;
}
sendQuestion();
}, 30000); // Time to answer = 30 seconds ( Ox Quiz packet shows a 30 second timer.
}

View File

@@ -22,12 +22,13 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
package server.events.gm;
import client.MapleCharacter;
import java.util.LinkedList;
import java.util.List;
import server.TimerManager;
import server.maps.MapleMap;
import tools.MaplePacketCreator;
import java.util.LinkedList;
import java.util.List;
/**
*
* @author kevintjuh93
@@ -62,24 +63,21 @@ public class MapleSnowball {
}
}
hittable = true;
TimerManager.getInstance().schedule(new Runnable() {
@Override
public void run() {
if (map.getSnowball(team).getPosition() > map.getSnowball(team == 0 ? 1 : 0).getPosition()) {
for (MapleCharacter chr : characters) {
if (chr != null)
chr.announce(MaplePacketCreator.rollSnowBall(false, 3, map.getSnowball(0), map.getSnowball(0)));
}
winner = true;
} else if (map.getSnowball(team == 0 ? 1 : 0).getPosition() > map.getSnowball(team).getPosition()) {
for (MapleCharacter chr : characters) {
if (chr != null)
chr.announce(MaplePacketCreator.rollSnowBall(false, 4, map.getSnowball(0), map.getSnowball(0)));
}
winner = true;
} //Else
warpOut();
}
TimerManager.getInstance().schedule(() -> {
if (map.getSnowball(team).getPosition() > map.getSnowball(team == 0 ? 1 : 0).getPosition()) {
for (MapleCharacter chr : characters) {
if (chr != null)
chr.announce(MaplePacketCreator.rollSnowBall(false, 3, map.getSnowball(0), map.getSnowball(0)));
}
winner = true;
} else if (map.getSnowball(team == 0 ? 1 : 0).getPosition() > map.getSnowball(team).getPosition()) {
for (MapleCharacter chr : characters) {
if (chr != null)
chr.announce(MaplePacketCreator.rollSnowBall(false, 4, map.getSnowball(0), map.getSnowball(0)));
}
winner = true;
} //Else
warpOut();
}, 600000);
}
@@ -112,13 +110,9 @@ public class MapleSnowball {
if (this.snowmanhp - damage < 0) {
this.snowmanhp = 0;
TimerManager.getInstance().schedule(new Runnable() {
@Override
public void run() {
setSnowmanHP(7500);
message(5);
}
TimerManager.getInstance().schedule(() -> {
setSnowmanHP(7500);
message(5);
}, 10000);
} else
this.snowmanhp -= damage;
@@ -149,17 +143,13 @@ public class MapleSnowball {
}
public void warpOut() {
TimerManager.getInstance().schedule(new Runnable() {
TimerManager.getInstance().schedule(() -> {
if (winner == true)
map.warpOutByTeam(team, 109050000);
else
map.warpOutByTeam(team, 109050001);
@Override
public void run() {
if (winner == true)
map.warpOutByTeam(team, 109050000);
else
map.warpOutByTeam(team, 109050001);
map.setSnowball(team, null);
}
map.setSnowball(team, null);
}, 10000);
}
}

View File

@@ -22,31 +22,25 @@
package server.expeditions;
import java.text.SimpleDateFormat;
import java.util.Date;
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.ConcurrentHashMap;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.concurrent.ScheduledFuture;
import client.MapleCharacter;
import net.server.PlayerStorage;
import net.server.Server;
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 server.TimerManager;
import server.life.MapleMonster;
import server.maps.MapleMap;
import tools.LogHelper;
import tools.MaplePacketCreator;
import client.MapleCharacter;
import java.util.Iterator;
import java.util.Properties;
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 java.text.SimpleDateFormat;
import java.util.*;
import java.util.Map.Entry;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.concurrent.ScheduledFuture;
/**
*
@@ -133,17 +127,14 @@ public class MapleExpedition {
final MapleExpedition exped = this;
startTime = System.currentTimeMillis() + type.getRegistrationTime() * 60 * 1000;
schedule = TimerManager.getInstance().schedule(new Runnable() {
@Override
public void run() {
if (registering){
exped.removeChannelExpedition(startMap.getChannelServer());
if (!silent) startMap.broadcastMessage(MaplePacketCreator.serverNotice(6, "[Expedition] The time limit has been reached. Expedition has been disbanded."));
dispose(false);
}
}
}, type.getRegistrationTime() * 60 * 1000);
schedule = TimerManager.getInstance().schedule(() -> {
if (registering){
exped.removeChannelExpedition(startMap.getChannelServer());
if (!silent) startMap.broadcastMessage(MaplePacketCreator.serverNotice(6, "[Expedition] The time limit has been reached. Expedition has been disbanded."));
dispose(false);
}
}, type.getRegistrationTime() * 60 * 1000);
}
public void dispose(boolean log){

View File

@@ -21,66 +21,45 @@
*/
package server.life;
import client.MapleBuffStat;
import client.MapleCharacter;
import client.MapleClient;
import client.MapleFamilyEntry;
import client.MapleJob;
import client.Skill;
import client.SkillFactory;
import client.*;
import client.status.MonsterStatus;
import client.status.MonsterStatusEffect;
import config.YamlConfig;
import constants.skills.Crusader;
import constants.skills.FPMage;
import constants.skills.Hermit;
import constants.skills.ILMage;
import constants.skills.NightLord;
import constants.skills.NightWalker;
import constants.skills.Priest;
import constants.skills.Shadower;
import constants.skills.WhiteKnight;
import java.awt.Point;
import java.lang.ref.WeakReference;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.EnumMap;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.HashSet;
import java.util.Set;
import java.util.concurrent.ScheduledFuture;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicLong;
import net.server.audit.locks.MonitoredReentrantLock;
import net.server.channel.Channel;
import net.server.world.MapleParty;
import net.server.world.MaplePartyCharacter;
import scripting.event.EventInstanceManager;
import server.TimerManager;
import server.life.MapleLifeFactory.BanishInfo;
import server.maps.MapleMap;
import server.maps.MapleMapObjectType;
import tools.IntervalBuilder;
import tools.MaplePacketCreator;
import tools.Pair;
import tools.Randomizer;
import constants.skills.*;
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.services.type.ChannelServices;
import net.server.channel.Channel;
import net.server.coordinator.world.MapleMonsterAggroCoordinator;
import net.server.services.task.channel.MobAnimationService;
import net.server.services.task.channel.MobClearSkillService;
import net.server.services.task.channel.MobStatusService;
import net.server.services.task.channel.OverallService;
import net.server.coordinator.world.MapleMonsterAggroCoordinator;
import net.server.services.type.ChannelServices;
import net.server.world.MapleParty;
import net.server.world.MaplePartyCharacter;
import scripting.event.EventInstanceManager;
import server.MapleStatEffect;
import server.TimerManager;
import server.life.MapleLifeFactory.BanishInfo;
import server.loot.MapleLootManager;
import server.maps.MapleMap;
import server.maps.MapleMapObjectType;
import server.maps.MapleSummon;
import tools.IntervalBuilder;
import tools.MaplePacketCreator;
import tools.Pair;
import tools.Randomizer;
import java.awt.*;
import java.lang.ref.WeakReference;
import java.util.List;
import java.util.*;
import java.util.Map.Entry;
import java.util.concurrent.ScheduledFuture;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicLong;
public class MapleMonster extends AbstractLoadedMapleLife {
@@ -792,51 +771,48 @@ public class MapleMonster extends AbstractLoadedMapleLife {
if(toSpawn.size() > 0) {
final EventInstanceManager eim = this.getMap().getEventInstance();
TimerManager.getInstance().schedule(new Runnable() {
@Override
public void run() {
MapleCharacter controller = lastController.getLeft();
boolean aggro = lastController.getRight();
for (Integer mid : toSpawn) {
final MapleMonster mob = MapleLifeFactory.getMonster(mid);
mob.setPosition(getPosition());
mob.setFh(getFh());
mob.setParentMobOid(getObjectId());
if (dropsDisabled()) {
mob.disableDrops();
}
reviveMap.spawnMonster(mob);
TimerManager.getInstance().schedule(() -> {
MapleCharacter controller = lastController.getLeft();
boolean aggro = lastController.getRight();
if (mob.getId() >= 8810010 && mob.getId() <= 8810017 && reviveMap.isHorntailDefeated()) {
boolean htKilled = false;
MapleMonster ht = reviveMap.getMonsterById(8810018);
if(ht != null) {
ht.lockMonster();
try {
htKilled = ht.isAlive();
ht.setHpZero();
} finally {
ht.unlockMonster();
}
if(htKilled) {
reviveMap.killMonster(ht, killer, true);
}
for (Integer mid : toSpawn) {
final MapleMonster mob = MapleLifeFactory.getMonster(mid);
mob.setPosition(getPosition());
mob.setFh(getFh());
mob.setParentMobOid(getObjectId());
if (dropsDisabled()) {
mob.disableDrops();
}
reviveMap.spawnMonster(mob);
if (mob.getId() >= 8810010 && mob.getId() <= 8810017 && reviveMap.isHorntailDefeated()) {
boolean htKilled = false;
MapleMonster ht = reviveMap.getMonsterById(8810018);
if(ht != null) {
ht.lockMonster();
try {
htKilled = ht.isAlive();
ht.setHpZero();
} finally {
ht.unlockMonster();
}
for(int i = 8810017; i >= 8810010; i--) {
reviveMap.killMonster(reviveMap.getMonsterById(i), killer, true);
if(htKilled) {
reviveMap.killMonster(ht, killer, true);
}
} else if (controller != null) {
mob.aggroSwitchController(controller, aggro);
}
if(eim != null) {
eim.reviveMonster(mob);
for(int i = 8810017; i >= 8810010; i--) {
reviveMap.killMonster(reviveMap.getMonsterById(i), killer, true);
}
} else if (controller != null) {
mob.aggroSwitchController(controller, aggro);
}
if(eim != null) {
eim.reviveMonster(mob);
}
}
}, getAnimationTime("die1"));
@@ -851,29 +827,26 @@ public class MapleMonster extends AbstractLoadedMapleLife {
public void dropFromFriendlyMonster(long delay) {
final MapleMonster m = this;
monsterItemDrop = TimerManager.getInstance().register(new Runnable() {
@Override
public void run() {
if (!m.isAlive()) {
if (monsterItemDrop != null) {
monsterItemDrop.cancel(false);
}
return;
monsterItemDrop = TimerManager.getInstance().register(() -> {
if (!m.isAlive()) {
if (monsterItemDrop != null) {
monsterItemDrop.cancel(false);
}
MapleMap map = m.getMap();
List<MapleCharacter> chrList = map.getAllPlayers();
if (!chrList.isEmpty()) {
MapleCharacter chr = (MapleCharacter) chrList.get(0);
EventInstanceManager eim = map.getEventInstance();
if (eim != null) {
eim.friendlyItemDrop(m);
}
map.dropFromFriendlyMonster(chr, m);
return;
}
MapleMap map = m.getMap();
List<MapleCharacter> chrList = map.getAllPlayers();
if (!chrList.isEmpty()) {
MapleCharacter chr = (MapleCharacter) chrList.get(0);
EventInstanceManager eim = map.getEventInstance();
if (eim != null) {
eim.friendlyItemDrop(m);
}
map.dropFromFriendlyMonster(chr, m);
}
}, delay, delay);
}
@@ -1197,26 +1170,22 @@ public class MapleMonster extends AbstractLoadedMapleLife {
}
}
final Runnable cancelTask = new Runnable() {
@Override
public void run() {
if (isAlive()) {
byte[] packet = MaplePacketCreator.cancelMonsterStatus(getObjectId(), status.getStati());
broadcastMonsterStatusMessage(packet);
}
statiLock.lock();
try {
for (MonsterStatus stat : status.getStati().keySet()) {
stati.remove(stat);
}
} finally {
statiLock.unlock();
}
setVenomMulti(0);
final Runnable cancelTask = () -> {
if (isAlive()) {
byte[] packet = MaplePacketCreator.cancelMonsterStatus(getObjectId(), status.getStati());
broadcastMonsterStatusMessage(packet);
}
statiLock.lock();
try {
for (MonsterStatus stat : status.getStati().keySet()) {
stati.remove(stat);
}
} finally {
statiLock.unlock();
}
setVenomMulti(0);
};
Runnable overtimeAction = null;
@@ -1313,22 +1282,18 @@ public class MapleMonster extends AbstractLoadedMapleLife {
}
public void applyMonsterBuff(final Map<MonsterStatus, Integer> stats, final int x, int skillId, long duration, MobSkill skill, final List<Integer> reflection) {
final Runnable cancelTask = new Runnable() {
final Runnable cancelTask = () -> {
if (isAlive()) {
byte[] packet = MaplePacketCreator.cancelMonsterStatus(getObjectId(), stats);
broadcastMonsterStatusMessage(packet);
@Override
public void run() {
if (isAlive()) {
byte[] packet = MaplePacketCreator.cancelMonsterStatus(getObjectId(), stats);
broadcastMonsterStatusMessage(packet);
statiLock.lock();
try {
for (final MonsterStatus stat : stats.keySet()) {
stati.remove(stat);
}
} finally {
statiLock.unlock();
statiLock.lock();
try {
for (final MonsterStatus stat : stats.keySet()) {
stati.remove(stat);
}
} finally {
statiLock.unlock();
}
}
};
@@ -1538,12 +1503,7 @@ public class MapleMonster extends AbstractLoadedMapleLife {
final MapleMonster mons = this;
MapleMap mmap = mons.getMap();
Runnable r = new Runnable() {
@Override
public void run() {
mons.clearSkill(skillId, level);
}
};
Runnable r = () -> mons.clearSkill(skillId, level);
MobClearSkillService service = (MobClearSkillService) map.getChannelServer().getServiceAccess(ChannelServices.MOB_CLEAR_SKILL);
service.registerMobClearSkillAction(mmap.getId(), r, cooltime);
@@ -1607,12 +1567,7 @@ public class MapleMonster extends AbstractLoadedMapleLife {
final MapleMonster mons = this;
MapleMap mmap = mons.getMap();
Runnable r = new Runnable() {
@Override
public void run() {
mons.clearAttack(attackPos);
}
};
Runnable r = () -> mons.clearAttack(attackPos);
MobClearSkillService service = (MobClearSkillService) map.getChannelServer().getServiceAccess(ChannelServices.MOB_CLEAR_SKILL);
service.registerMobClearSkillAction(mmap.getId(), r, cooltime);
@@ -1715,16 +1670,13 @@ public class MapleMonster extends AbstractLoadedMapleLife {
stats.setEffectiveness(e, ee);
MapleMap mmap = this.getMap();
Runnable r = new Runnable() {
@Override
public void run() {
monsterLock.lock();
try {
stats.removeEffectiveness(fE);
stats.setEffectiveness(fE, fEE);
} finally {
monsterLock.unlock();
}
Runnable r = () -> {
monsterLock.lock();
try {
stats.removeEffectiveness(fE);
stats.setEffectiveness(fE, fEE);
} finally {
monsterLock.unlock();
}
};
@@ -2178,35 +2130,32 @@ public class MapleMonster extends AbstractLoadedMapleLife {
}
availablePuppetUpdate = false;
Runnable r = new Runnable() {
@Override
public void run() {
try {
MapleCharacter chrController = MapleMonster.this.getActiveController();
if (chrController == null) {
Runnable r = () -> {
try {
MapleCharacter chrController = MapleMonster.this.getActiveController();
if (chrController == null) {
return;
}
MapleStatEffect puppetEffect = chrController.getBuffEffect(MapleBuffStat.PUPPET);
if (puppetEffect != null) {
MapleSummon puppet = chrController.getSummonByKey(puppetEffect.getSourceId());
if (puppet != null && isPuppetInVicinity(puppet)) {
controllerHasPuppet = true;
aggroRefreshPuppetVisibility(chrController, puppet);
return;
}
MapleStatEffect puppetEffect = chrController.getBuffEffect(MapleBuffStat.PUPPET);
if (puppetEffect != null) {
MapleSummon puppet = chrController.getSummonByKey(puppetEffect.getSourceId());
if (puppet != null && isPuppetInVicinity(puppet)) {
controllerHasPuppet = true;
aggroRefreshPuppetVisibility(chrController, puppet);
return;
}
}
if (controllerHasPuppet) {
controllerHasPuppet = false;
chrController.announce(MaplePacketCreator.stopControllingMonster(MapleMonster.this.getObjectId()));
aggroMonsterControl(chrController.getClient(), MapleMonster.this, MapleMonster.this.isControllerHasAggro());
}
} finally {
availablePuppetUpdate = true;
}
if (controllerHasPuppet) {
controllerHasPuppet = false;
chrController.announce(MaplePacketCreator.stopControllingMonster(MapleMonster.this.getObjectId()));
aggroMonsterControl(chrController.getClient(), MapleMonster.this, MapleMonster.this.isControllerHasAggro());
}
} finally {
availablePuppetUpdate = true;
}
};
@@ -2252,12 +2201,7 @@ public class MapleMonster extends AbstractLoadedMapleLife {
}
private void disposeLocks() {
LockCollector.getInstance().registerDisposeAction(new Runnable() {
@Override
public void run() {
emptyLocks();
}
});
LockCollector.getInstance().registerDisposeAction(() -> emptyLocks());
}
private void emptyLocks() {

View File

@@ -21,25 +21,22 @@
*/
package server.life;
import java.awt.Point;
import java.awt.Rectangle;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import client.MapleCharacter;
import client.MapleDisease;
import client.status.MonsterStatus;
import constants.game.GameConstants;
import java.util.LinkedList;
import java.util.Map;
import net.server.services.type.ChannelServices;
import net.server.services.task.channel.OverallService;
import tools.Randomizer;
import net.server.services.type.ChannelServices;
import server.maps.MapleMap;
import server.maps.MapleMapObject;
import server.maps.MapleMapObjectType;
import server.maps.MapleMist;
import tools.ArrayMap;
import tools.Randomizer;
import java.awt.*;
import java.util.List;
import java.util.*;
/**
*
@@ -108,12 +105,9 @@ public class MobSkill {
}
public void applyDelayedEffect(final MapleCharacter player, final MapleMonster monster, final boolean skill, int animationTime) {
Runnable toRun = new Runnable() {
@Override
public void run() {
if (monster.isAlive()) {
applyEffect(player, monster, skill, null);
}
Runnable toRun = () -> {
if (monster.isAlive()) {
applyEffect(player, monster, skill, null);
}
};

View File

@@ -20,12 +20,6 @@
package server.life.positioner;
import config.YamlConfig;
import java.awt.Point;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import net.server.Server;
import net.server.channel.Channel;
import server.life.MaplePlayerNPC;
@@ -34,6 +28,12 @@ import server.maps.MapleMapObject;
import server.maps.MapleMapObjectType;
import tools.MaplePacketCreator;
import java.awt.*;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
/**
*
* @author RonanLana
@@ -92,11 +92,8 @@ public class MaplePlayerNPCPodium {
playerNpcs.add((MaplePlayerNPC) mmo);
}
Collections.sort(playerNpcs, new Comparator<MaplePlayerNPC>() {
@Override
public int compare(MaplePlayerNPC p1, MaplePlayerNPC p2) {
return p1.getScriptId() - p2.getScriptId(); // scriptid as playernpc history
}
Collections.sort(playerNpcs, (p1, p2) -> {
return p1.getScriptId() - p2.getScriptId(); // scriptid as playernpc history
});
for(Channel ch : Server.getInstance().getChannelsFromWorld(map.getWorld())) {

View File

@@ -20,14 +20,6 @@
package server.life.positioner;
import config.YamlConfig;
import java.awt.Point;
import java.awt.Rectangle;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.LinkedList;
import java.util.List;
import net.server.Server;
import net.server.channel.Channel;
import server.life.MaplePlayerNPC;
@@ -36,6 +28,10 @@ import server.maps.MapleMapObject;
import server.maps.MapleMapObjectType;
import tools.MaplePacketCreator;
import java.awt.*;
import java.util.List;
import java.util.*;
/**
*
* @author RonanLana
@@ -145,11 +141,8 @@ public class MaplePlayerNPCPositioner {
playerNpcs.add((MaplePlayerNPC) mmo);
}
Collections.sort(playerNpcs, new Comparator<MaplePlayerNPC>() {
@Override
public int compare(MaplePlayerNPC p1, MaplePlayerNPC p2) {
return p1.getScriptId() - p2.getScriptId(); // scriptid as playernpc history
}
Collections.sort(playerNpcs, (p1, p2) -> {
return p1.getScriptId() - p2.getScriptId(); // scriptid as playernpc history
});
for(Channel ch : Server.getInstance().getChannelsFromWorld(map.getWorld())) {

View File

@@ -21,9 +21,10 @@
*/
package server.maps;
import java.util.concurrent.ScheduledFuture;
import server.TimerManager;
import java.util.concurrent.ScheduledFuture;
public class MapMonitor {
private ScheduledFuture<?> monitorSchedule;
private MapleMap map;
@@ -32,12 +33,9 @@ public class MapMonitor {
public MapMonitor(final MapleMap map, String portal) {
this.map = map;
this.portal = map.getPortal(portal);
this.monitorSchedule = TimerManager.getInstance().register(new Runnable() {
@Override
public void run() {
if (map.getCharacters().size() < 1) {
cancelAction();
}
this.monitorSchedule = TimerManager.getInstance().register(() -> {
if (map.getCharacters().size() < 1) {
cancelAction();
}
}, 5000);
}

View File

@@ -21,15 +21,14 @@
*/
package server.maps;
import java.awt.Point;
import java.util.Collection;
import client.MapleCharacter;
import config.YamlConfig;
import net.server.services.task.channel.OverallService;
import net.server.services.type.ChannelServices;
import tools.Pair;
import client.MapleCharacter;
import net.server.services.type.ChannelServices;
import net.server.services.task.channel.OverallService;
import java.awt.*;
import java.util.Collection;
/**
*
@@ -134,11 +133,8 @@ public class MapleDoor {
MapleMap town = destroyDoor.getTown();
OverallService service = (OverallService) town.getChannelServer().getServiceAccess(ChannelServices.OVERALL);
service.registerOverallAction(town.getId(), new Runnable() {
@Override
public void run() {
destroyDoor.broadcastRemoveDoor(owner); // thanks BHB88 for noticing doors crashing players when instantly cancelling buff
}
service.registerOverallAction(town.getId(), () -> {
destroyDoor.broadcastRemoveDoor(owner); // thanks BHB88 for noticing doors crashing players when instantly cancelling buff
}, effectTimeLeft);
} else {
destroyDoor.broadcastRemoveDoor(owner);

View File

@@ -34,27 +34,7 @@ import client.status.MonsterStatusEffect;
import config.YamlConfig;
import constants.game.GameConstants;
import constants.inventory.ItemConstants;
import java.awt.Point;
import java.awt.Rectangle;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.LinkedHashSet;
import java.util.HashSet;
import java.util.Set;
import java.util.LinkedList;
import java.util.List;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Random;
import java.util.concurrent.ScheduledFuture;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.locks.Lock;
import net.server.Server;
import net.server.audit.locks.MonitoredLockType;
import net.server.audit.locks.MonitoredReadLock;
import net.server.audit.locks.MonitoredReentrantReadWriteLock;
@@ -62,36 +42,22 @@ import net.server.audit.locks.MonitoredWriteLock;
import net.server.audit.locks.factory.MonitoredReadLockFactory;
import net.server.audit.locks.factory.MonitoredReentrantLockFactory;
import net.server.audit.locks.factory.MonitoredWriteLockFactory;
import java.lang.ref.WeakReference;
import net.server.Server;
import net.server.coordinator.world.MapleMonsterAggroCoordinator;
import net.server.channel.Channel;
import net.server.services.type.ChannelServices;
import net.server.coordinator.world.MapleMonsterAggroCoordinator;
import net.server.services.task.channel.FaceExpressionService;
import net.server.services.task.channel.MobMistService;
import net.server.services.task.channel.OverallService;
import net.server.services.type.ChannelServices;
import net.server.world.MapleParty;
import net.server.world.World;
import scripting.event.EventInstanceManager;
import scripting.map.MapScriptManager;
import server.MapleItemInformationProvider;
import server.MapleStatEffect;
import server.TimerManager;
import server.events.gm.MapleCoconut;
import server.events.gm.MapleFitness;
import server.events.gm.MapleOla;
import server.events.gm.MapleOxQuiz;
import server.events.gm.MapleSnowball;
import server.life.MapleLifeFactory;
import server.events.gm.*;
import server.life.*;
import server.life.MapleLifeFactory.selfDestruction;
import server.life.MapleMonster;
import server.life.MapleMonsterInformationProvider;
import server.life.MapleNPC;
import server.life.MonsterDropEntry;
import server.life.MonsterGlobalDropEntry;
import server.life.SpawnPoint;
import scripting.event.EventInstanceManager;
import server.life.MaplePlayerNPC;
import server.life.MonsterListener;
import server.partyquest.GuardianSpawnPoint;
import server.partyquest.MapleCarnivalFactory;
import server.partyquest.MapleCarnivalFactory.MCSkill;
@@ -100,6 +66,15 @@ import tools.MaplePacketCreator;
import tools.Pair;
import tools.Randomizer;
import java.awt.*;
import java.lang.ref.WeakReference;
import java.util.List;
import java.util.*;
import java.util.Map.Entry;
import java.util.concurrent.ScheduledFuture;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.locks.Lock;
public class MapleMap {
private static final List<MapleMapObjectType> rangedMapobjectTypes = Arrays.asList(MapleMapObjectType.SHOP, MapleMapObjectType.ITEM, MapleMapObjectType.NPC, MapleMapObjectType.MONSTER, MapleMapObjectType.DOOR, MapleMapObjectType.SUMMON, MapleMapObjectType.REACTOR);
@@ -823,49 +798,41 @@ public class MapleMap {
return;
}
itemMonitor = TimerManager.getInstance().register(new Runnable() {
@Override
public void run() {
chrWLock.lock();
try {
if (characters.isEmpty()) {
if(itemMonitorTimeout == 0) {
if(itemMonitor != null) {
stopItemMonitor();
aggroMonitor.stopAggroCoordinator();
}
return;
} else {
itemMonitorTimeout--;
itemMonitor = TimerManager.getInstance().register(() -> {
chrWLock.lock();
try {
if (characters.isEmpty()) {
if(itemMonitorTimeout == 0) {
if(itemMonitor != null) {
stopItemMonitor();
aggroMonitor.stopAggroCoordinator();
}
return;
} else {
itemMonitorTimeout = 1;
itemMonitorTimeout--;
}
} finally {
chrWLock.unlock();
}
boolean tryClean;
objectRLock.lock();
try {
tryClean = registeredDrops.size() > 70;
} finally {
objectRLock.unlock();
}
if (tryClean) {
cleanItemMonitor();
} else {
itemMonitorTimeout = 1;
}
} finally {
chrWLock.unlock();
}
boolean tryClean;
objectRLock.lock();
try {
tryClean = registeredDrops.size() > 70;
} finally {
objectRLock.unlock();
}
if (tryClean) {
cleanItemMonitor();
}
}, YamlConfig.config.server.ITEM_MONITOR_TIME, YamlConfig.config.server.ITEM_MONITOR_TIME);
expireItemsTask = TimerManager.getInstance().register(new Runnable() {
@Override
public void run() {
makeDisappearExpiredItemDrops();
}
}, YamlConfig.config.server.ITEM_EXPIRE_CHECK, YamlConfig.config.server.ITEM_EXPIRE_CHECK);
expireItemsTask = TimerManager.getInstance().register(() -> makeDisappearExpiredItemDrops(), YamlConfig.config.server.ITEM_EXPIRE_CHECK, YamlConfig.config.server.ITEM_EXPIRE_CHECK);
if(YamlConfig.config.server.USE_SPAWN_LOOT_ON_ANIMATION) {
lootLock.lock();
@@ -875,20 +842,10 @@ public class MapleMap {
lootLock.unlock();
}
mobSpawnLootTask = TimerManager.getInstance().register(new Runnable() {
@Override
public void run() {
spawnMobItemDrops();
}
}, 200, 200);
mobSpawnLootTask = TimerManager.getInstance().register(() -> spawnMobItemDrops(), 200, 200);
}
characterStatUpdateTask = TimerManager.getInstance().register(new Runnable() {
@Override
public void run() {
runCharacterStatUpdate();
}
}, 200, 200);
characterStatUpdateTask = TimerManager.getInstance().register(() -> runCharacterStatUpdate(), 200, 200);
itemMonitorTimeout = 1;
} finally {
@@ -1145,18 +1102,15 @@ public class MapleMap {
private void spawnDrop(final Item idrop, final Point dropPos, final MapleMapObject dropper, final MapleCharacter chr, final byte droptype, final short questid) {
final MapleMapItem mdrop = new MapleMapItem(idrop, dropPos, dropper, chr, chr.getClient(), droptype, false, questid);
mdrop.setDropTime(Server.getInstance().getCurrentTime());
spawnAndAddRangedMapObject(mdrop, new DelayedPacketCreation() {
@Override
public void sendPackets(MapleClient c) {
MapleCharacter chr = c.getPlayer();
if (chr.needQuestItem(questid, idrop.getItemId())) {
mdrop.lockItem();
try {
c.announce(MaplePacketCreator.dropItemFromMapObject(chr, mdrop, dropper.getPosition(), dropPos, (byte) 1));
} finally {
mdrop.unlockItem();
}
spawnAndAddRangedMapObject(mdrop, c -> {
MapleCharacter chr1 = c.getPlayer();
if (chr1.needQuestItem(questid, idrop.getItemId())) {
mdrop.lockItem();
try {
c.announce(MaplePacketCreator.dropItemFromMapObject(chr1, mdrop, dropper.getPosition(), dropPos, (byte) 1));
} finally {
mdrop.unlockItem();
}
}
}, null);
@@ -1170,15 +1124,12 @@ public class MapleMap {
final MapleMapItem mdrop = new MapleMapItem(meso, droppos, dropper, owner, owner.getClient(), droptype, playerDrop);
mdrop.setDropTime(Server.getInstance().getCurrentTime());
spawnAndAddRangedMapObject(mdrop, new DelayedPacketCreation() {
@Override
public void sendPackets(MapleClient c) {
mdrop.lockItem();
try {
c.announce(MaplePacketCreator.dropItemFromMapObject(c.getPlayer(), mdrop, dropper.getPosition(), droppos, (byte) 1));
} finally {
mdrop.unlockItem();
}
spawnAndAddRangedMapObject(mdrop, c -> {
mdrop.lockItem();
try {
c.announce(MaplePacketCreator.dropItemFromMapObject(c.getPlayer(), mdrop, dropper.getPosition(), droppos, (byte) 1));
} finally {
mdrop.unlockItem();
}
}, null);
@@ -1916,12 +1867,7 @@ public class MapleMap {
getEventInstance().registerMonster(monster);
}
spawnAndAddRangedMapObject(monster, new DelayedPacketCreation() {
@Override
public void sendPackets(MapleClient c) {
c.announce(MaplePacketCreator.spawnMonster(monster, false));
}
});
spawnAndAddRangedMapObject(monster, c -> c.announce(MaplePacketCreator.spawnMonster(monster, false)));
monster.aggroUpdateController();
updateBossSpawn(monster);
@@ -1937,21 +1883,11 @@ public class MapleMap {
Runnable removeAfterAction;
if (selfDestruction == null) {
removeAfterAction = new Runnable() {
@Override
public void run() {
killMonster(monster, null, false);
}
};
removeAfterAction = () -> killMonster(monster, null, false);
registerMapSchedule(removeAfterAction, monster.getStats().removeAfter() * 1000);
} else {
removeAfterAction = new Runnable() {
@Override
public void run() {
killMonster(monster, null, false, selfDestruction.getAction());
}
};
removeAfterAction = () -> killMonster(monster, null, false, selfDestruction.getAction());
registerMapSchedule(removeAfterAction, selfDestruction.removeAfter() * 1000);
}
@@ -2018,12 +1954,7 @@ public class MapleMap {
getEventInstance().registerMonster(monster);
}
spawnAndAddRangedMapObject(monster, new DelayedPacketCreation() {
@Override
public void sendPackets(MapleClient c) {
c.announce(MaplePacketCreator.spawnMonster(monster, true));
}
}, null);
spawnAndAddRangedMapObject(monster, c -> c.announce(MaplePacketCreator.spawnMonster(monster, true)), null);
monster.aggroUpdateController();
updateBossSpawn(monster);
@@ -2084,12 +2015,7 @@ public class MapleMap {
monster.setPosition(spos);
monster.setSpawnEffect(effect);
spawnAndAddRangedMapObject(monster, new DelayedPacketCreation() {
@Override
public void sendPackets(MapleClient c) {
c.announce(MaplePacketCreator.spawnMonster(monster, true, effect));
}
});
spawnAndAddRangedMapObject(monster, c -> c.announce(MaplePacketCreator.spawnMonster(monster, true, effect)));
monster.aggroUpdateController();
updateBossSpawn(monster);
@@ -2102,12 +2028,7 @@ public class MapleMap {
public void spawnFakeMonster(final MapleMonster monster) {
monster.setMap(this);
monster.setFake(true);
spawnAndAddRangedMapObject(monster, new DelayedPacketCreation() {
@Override
public void sendPackets(MapleClient c) {
c.announce(MaplePacketCreator.spawnFakeMonster(monster, 0));
}
});
spawnAndAddRangedMapObject(monster, c -> c.announce(MaplePacketCreator.spawnFakeMonster(monster, 0)));
spawnedMonstersOnMap.incrementAndGet();
addSelfDestructive(monster);
@@ -2122,30 +2043,17 @@ public class MapleMap {
public void spawnReactor(final MapleReactor reactor) {
reactor.setMap(this);
spawnAndAddRangedMapObject(reactor, new DelayedPacketCreation() {
@Override
public void sendPackets(MapleClient c) {
c.announce(reactor.makeSpawnData());
}
});
spawnAndAddRangedMapObject(reactor, c -> c.announce(reactor.makeSpawnData()));
}
public void spawnDoor(final MapleDoorObject door) {
spawnAndAddRangedMapObject(door, new DelayedPacketCreation() {
@Override
public void sendPackets(MapleClient c) {
MapleCharacter chr = c.getPlayer();
if (chr != null) {
door.sendSpawnData(c, false);
chr.addVisibleMapObject(door);
}
spawnAndAddRangedMapObject(door, c -> {
MapleCharacter chr = c.getPlayer();
if (chr != null) {
door.sendSpawnData(c, false);
chr.addVisibleMapObject(door);
}
}, new SpawnCondition() {
@Override
public boolean canSpawn(MapleCharacter chr) {
return chr.getMapId() == door.getFrom().getId();
}
});
}, chr -> chr.getMapId() == door.getFrom().getId());
}
public MaplePortal getDoorPortal(int doorid) {
@@ -2159,12 +2067,9 @@ public class MapleMap {
}
public void spawnSummon(final MapleSummon summon) {
spawnAndAddRangedMapObject(summon, new DelayedPacketCreation() {
@Override
public void sendPackets(MapleClient c) {
if (summon != null) {
c.announce(MaplePacketCreator.spawnSummon(summon, true));
}
spawnAndAddRangedMapObject(summon, c -> {
if (summon != null) {
c.announce(MaplePacketCreator.spawnSummon(summon, true));
}
}, null);
}
@@ -2175,30 +2080,24 @@ public class MapleMap {
TimerManager tMan = TimerManager.getInstance();
final ScheduledFuture<?> poisonSchedule;
if (poison) {
Runnable poisonTask = new Runnable() {
@Override
public void run() {
List<MapleMapObject> affectedMonsters = getMapObjectsInBox(mist.getBox(), Collections.singletonList(MapleMapObjectType.MONSTER));
for (MapleMapObject mo : affectedMonsters) {
if (mist.makeChanceResult()) {
MonsterStatusEffect poisonEffect = new MonsterStatusEffect(Collections.singletonMap(MonsterStatus.POISON, 1), mist.getSourceSkill(), null, false);
((MapleMonster) mo).applyStatus(mist.getOwner(), poisonEffect, true, duration);
}
Runnable poisonTask = () -> {
List<MapleMapObject> affectedMonsters = getMapObjectsInBox(mist.getBox(), Collections.singletonList(MapleMapObjectType.MONSTER));
for (MapleMapObject mo : affectedMonsters) {
if (mist.makeChanceResult()) {
MonsterStatusEffect poisonEffect = new MonsterStatusEffect(Collections.singletonMap(MonsterStatus.POISON, 1), mist.getSourceSkill(), null, false);
((MapleMonster) mo).applyStatus(mist.getOwner(), poisonEffect, true, duration);
}
}
};
poisonSchedule = tMan.register(poisonTask, 2000, 2500);
} else if (recovery) {
Runnable poisonTask = new Runnable() {
@Override
public void run() {
List<MapleMapObject> players = getMapObjectsInBox(mist.getBox(), Collections.singletonList(MapleMapObjectType.PLAYER));
for (MapleMapObject mo : players) {
if (mist.makeChanceResult()) {
MapleCharacter chr = (MapleCharacter) mo;
if (mist.getOwner().getId() == chr.getId() || mist.getOwner().getParty() != null && mist.getOwner().getParty().containsMembers(chr.getMPC())) {
chr.addMP((int) mist.getSourceSkill().getEffect(chr.getSkillLevel(mist.getSourceSkill().getId())).getX() * chr.getMp() / 100);
}
Runnable poisonTask = () -> {
List<MapleMapObject> players = getMapObjectsInBox(mist.getBox(), Collections.singletonList(MapleMapObjectType.PLAYER));
for (MapleMapObject mo : players) {
if (mist.makeChanceResult()) {
MapleCharacter chr = (MapleCharacter) mo;
if (mist.getOwner().getId() == chr.getId() || mist.getOwner().getParty() != null && mist.getOwner().getParty().containsMembers(chr.getMPC())) {
chr.addMP((int) mist.getSourceSkill().getEffect(chr.getSkillLevel(mist.getSourceSkill().getId())).getX() * chr.getMp() / 100);
}
}
}
@@ -2208,15 +2107,12 @@ public class MapleMap {
poisonSchedule = null;
}
Runnable mistSchedule = new Runnable() {
@Override
public void run() {
removeMapObject(mist);
if (poisonSchedule != null) {
poisonSchedule.cancel(false);
}
broadcastMessage(mist.makeDestroyData());
Runnable mistSchedule = () -> {
removeMapObject(mist);
if (poisonSchedule != null) {
poisonSchedule.cancel(false);
}
broadcastMessage(mist.makeDestroyData());
};
MobMistService service = (MobMistService) this.getChannelServer().getServiceAccess(ChannelServices.MOB_MIST);
@@ -2227,12 +2123,9 @@ public class MapleMap {
addMapObject(kite);
broadcastMessage(kite.makeSpawnData());
Runnable expireKite = new Runnable() {
@Override
public void run() {
removeMapObject(kite);
broadcastMessage(kite.makeDestroyData());
}
Runnable expireKite = () -> {
removeMapObject(kite);
broadcastMessage(kite.makeDestroyData());
};
getWorldServer().registerTimedMapObject(expireKite, YamlConfig.config.server.KITE_EXPIRE_TIME);
@@ -2252,15 +2145,12 @@ public class MapleMap {
final MapleMapItem mdrop = new MapleMapItem(item, droppos, dropper, owner, owner.getClient(), dropType, playerDrop);
mdrop.setDropTime(Server.getInstance().getCurrentTime());
spawnAndAddRangedMapObject(mdrop, new DelayedPacketCreation() {
@Override
public void sendPackets(MapleClient c) {
mdrop.lockItem();
try {
c.announce(MaplePacketCreator.dropItemFromMapObject(c.getPlayer(), mdrop, dropper.getPosition(), droppos, (byte) 1));
} finally {
mdrop.unlockItem();
}
spawnAndAddRangedMapObject(mdrop, c -> {
mdrop.lockItem();
try {
c.announce(MaplePacketCreator.dropItemFromMapObject(c.getPlayer(), mdrop, dropper.getPosition(), droppos, (byte) 1));
} finally {
mdrop.unlockItem();
}
}, null);
@@ -2392,12 +2282,9 @@ public class MapleMap {
mapEffect = new MapleMapEffect(msg, itemId);
broadcastMessage(mapEffect.makeStartData());
Runnable r = new Runnable() {
@Override
public void run() {
broadcastMessage(mapEffect.makeDestroyData());
mapEffect = null;
}
Runnable r = () -> {
broadcastMessage(mapEffect.makeDestroyData());
mapEffect = null;
};
registerMapSchedule(r, time);
@@ -2516,73 +2403,49 @@ public class MapleMap {
if (mapid == 200090060) { // To Rien
int travelTime = getWorldServer().getTransportationTime(1 * 60 * 1000);
chr.announce(MaplePacketCreator.getClock(travelTime / 1000));
TimerManager.getInstance().schedule(new Runnable() {
@Override
public void run() {
if (chr.getMapId() == 200090060) {
chr.changeMap(140020300, 0);
}
TimerManager.getInstance().schedule(() -> {
if (chr.getMapId() == 200090060) {
chr.changeMap(140020300, 0);
}
}, travelTime);
} else if (mapid == 200090070) { // To Lith Harbor
int travelTime = getWorldServer().getTransportationTime(1 * 60 * 1000);
chr.announce(MaplePacketCreator.getClock(travelTime / 1000));
TimerManager.getInstance().schedule(new Runnable() {
@Override
public void run() {
if (chr.getMapId() == 200090070) {
chr.changeMap(104000000, 3);
}
TimerManager.getInstance().schedule(() -> {
if (chr.getMapId() == 200090070) {
chr.changeMap(104000000, 3);
}
}, travelTime);
} else if (mapid == 200090030) { // To Ereve (SkyFerry)
int travelTime = getWorldServer().getTransportationTime(2 * 60 * 1000);
chr.announce(MaplePacketCreator.getClock(travelTime / 1000));
TimerManager.getInstance().schedule(new Runnable() {
@Override
public void run() {
if (chr.getMapId() == 200090030) {
chr.changeMap(130000210, 0);
}
TimerManager.getInstance().schedule(() -> {
if (chr.getMapId() == 200090030) {
chr.changeMap(130000210, 0);
}
}, travelTime);
} else if (mapid == 200090031) { // To Victoria Island (SkyFerry)
int travelTime = getWorldServer().getTransportationTime(2 * 60 * 1000);
chr.announce(MaplePacketCreator.getClock(travelTime / 1000));
TimerManager.getInstance().schedule(new Runnable() {
@Override
public void run() {
if (chr.getMapId() == 200090031) {
chr.changeMap(101000400, 0);
}
TimerManager.getInstance().schedule(() -> {
if (chr.getMapId() == 200090031) {
chr.changeMap(101000400, 0);
}
}, travelTime);
} else if (mapid == 200090021) { // To Orbis (SkyFerry)
int travelTime = getWorldServer().getTransportationTime(8 * 60 * 1000);
chr.announce(MaplePacketCreator.getClock(travelTime / 1000));
TimerManager.getInstance().schedule(new Runnable() {
@Override
public void run() {
if (chr.getMapId() == 200090021) {
chr.changeMap(200000161, 0);
}
TimerManager.getInstance().schedule(() -> {
if (chr.getMapId() == 200090021) {
chr.changeMap(200000161, 0);
}
}, travelTime);
} else if (mapid == 200090020) { // To Ereve From Orbis (SkyFerry)
int travelTime = getWorldServer().getTransportationTime(8 * 60 * 1000);
chr.announce(MaplePacketCreator.getClock(travelTime / 1000));
TimerManager.getInstance().schedule(new Runnable() {
@Override
public void run() {
if (chr.getMapId() == 200090020) {
chr.changeMap(130000210, 0);
}
TimerManager.getInstance().schedule(() -> {
if (chr.getMapId() == 200090020) {
chr.changeMap(130000210, 0);
}
}, travelTime);
} else if (MapleMiniDungeonInfo.isDungeonMap(mapid)) {
@@ -3590,17 +3453,14 @@ public class MapleMap {
MapleMap reactorMap = reactor.getMap();
OverallService service = (OverallService) reactorMap.getChannelServer().getServiceAccess(ChannelServices.OVERALL);
service.registerOverallAction(reactorMap.getId(), new Runnable() {
@Override
public void run() {
reactor.lockReactor();
try {
reactor.resetReactorActions(0);
reactor.setAlive(true);
broadcastMessage(MaplePacketCreator.triggerReactor(reactor, 0));
} finally {
reactor.unlockReactor();
}
service.registerOverallAction(reactorMap.getId(), () -> {
reactor.lockReactor();
try {
reactor.resetReactorActions(0);
reactor.setAlive(true);
broadcastMessage(MaplePacketCreator.triggerReactor(reactor, 0));
} finally {
reactor.unlockReactor();
}
}, reactor.getDelay());
}

View File

@@ -19,16 +19,16 @@
*/
package server.maps;
import server.TimerManager;
import client.MapleCharacter;
import java.util.List;
import java.util.ArrayList;
import java.util.concurrent.ScheduledFuture;
import java.util.concurrent.locks.Lock;
import tools.MaplePacketCreator;
import net.server.audit.locks.MonitoredLockType;
import net.server.audit.locks.factory.MonitoredReentrantLockFactory;
import server.TimerManager;
import tools.MaplePacketCreator;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.ScheduledFuture;
import java.util.concurrent.locks.Lock;
/**
*
@@ -46,12 +46,7 @@ public class MapleMiniDungeon {
baseMap = base;
expireTime = timeLimit * 1000;
timeoutTask = TimerManager.getInstance().schedule(new Runnable() {
@Override
public void run() {
close();
}
}, expireTime);
timeoutTask = TimerManager.getInstance().schedule(() -> close(), expireTime);
expireTime += System.currentTimeMillis();
}

View File

@@ -23,22 +23,20 @@ package server.maps;
import client.MapleClient;
import config.YamlConfig;
import java.awt.Rectangle;
import java.util.List;
import java.util.concurrent.ScheduledFuture;
import java.util.concurrent.locks.Lock;
import net.server.audit.locks.MonitoredLockType;
import net.server.audit.locks.factory.MonitoredReentrantLockFactory;
import net.server.services.task.channel.OverallService;
import net.server.services.type.ChannelServices;
import scripting.reactor.ReactorScriptManager;
import server.TimerManager;
import server.partyquest.GuardianSpawnPoint;
import tools.MaplePacketCreator;
import tools.Pair;
import net.server.audit.locks.MonitoredLockType;
import net.server.services.type.ChannelServices;
import net.server.services.task.channel.OverallService;
import server.partyquest.GuardianSpawnPoint;
import java.awt.*;
import java.util.List;
import java.util.concurrent.ScheduledFuture;
import java.util.concurrent.locks.Lock;
/**
*
@@ -232,23 +230,15 @@ public class MapleReactor extends AbstractMapleMapObject {
if (timeOut > -1) {
final byte nextState = stats.getTimeoutState(state);
timeoutTask = TimerManager.getInstance().schedule(new Runnable() {
@Override
public void run() {
timeoutTask = null;
tryForceHitReactor(nextState);
}
timeoutTask = TimerManager.getInstance().schedule(() -> {
timeoutTask = null;
tryForceHitReactor(nextState);
}, timeOut);
}
}
public void delayedHitReactor(final MapleClient c, long delay) {
TimerManager.getInstance().schedule(new Runnable() {
@Override
public void run() {
hitReactor(c);
}
}, delay);
TimerManager.getInstance().schedule(() -> hitReactor(c), delay);
}
public void hitReactor(MapleClient c) {
@@ -371,12 +361,9 @@ public class MapleReactor extends AbstractMapleMapObject {
}
public void delayedRespawn() {
Runnable r = new Runnable() {
@Override
public void run() {
delayedRespawnRun = null;
respawn();
}
Runnable r = () -> {
delayedRespawnRun = null;
respawn();
};
delayedRespawnRun = r;

View File

@@ -22,11 +22,12 @@
package server.maps;
import client.MapleCharacter;
import java.util.List;
import net.server.Server;
import server.TimerManager;
import tools.MaplePacketCreator;
import java.util.List;
/*
* MapleTVEffect
* @author MrXotic (XoticStory)
@@ -58,12 +59,7 @@ public class MapleTVEffect {
} else if (type == 5) {
delay = 60000;
}
TimerManager.getInstance().schedule(new Runnable() {
@Override
public void run() {
broadcastTV(false, userWorld, null, null, -1, null);
}
}, delay);
TimerManager.getInstance().schedule(() -> broadcastTV(false, userWorld, null, null, -1, null), delay);
} else {
server.broadcastMessage(userWorld, MaplePacketCreator.removeTV());
}

View File

@@ -19,12 +19,6 @@
*/
package server.partyquest;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.concurrent.ScheduledFuture;
import client.MapleCharacter;
import constants.game.GameConstants;
import server.TimerManager;
@@ -33,6 +27,13 @@ import server.expeditions.MapleExpeditionType;
import server.maps.MapleMap;
import tools.MaplePacketCreator;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.concurrent.ScheduledFuture;
/**
*
* @author Ronan
@@ -78,26 +79,11 @@ public class AriantColiseum {
mc.announce(MaplePacketCreator.updateAriantPQRanking(score));
}
setAriantScoreBoard(TimerManager.getInstance().schedule(new Runnable() {
@Override
public void run() {
showArenaResults();
}
}, pqTimerBoard));
setAriantScoreBoard(TimerManager.getInstance().schedule(() -> showArenaResults(), pqTimerBoard));
setArenaFinish(TimerManager.getInstance().schedule(new Runnable() {
@Override
public void run() {
enterKingsRoom();
}
}, pqTimer));
setArenaFinish(TimerManager.getInstance().schedule(() -> enterKingsRoom(), pqTimer));
setArenaUpdate(TimerManager.getInstance().register(new Runnable() {
@Override
public void run() {
broadcastAriantScoreUpdate();
}
}, 500, 500));
setArenaUpdate(TimerManager.getInstance().register(() -> broadcastAriantScoreUpdate(), 500, 500));
}
private void setArenaUpdate(ScheduledFuture<?> ariantUpdate) {
@@ -289,13 +275,10 @@ public class AriantColiseum {
chr.changeMap(980010000, 0);
}
map.getWorldServer().registerTimedMapObject(new Runnable() {
@Override
public void run() {
score.clear();
exped = null;
map = null;
}
map.getWorldServer().registerTimedMapObject(() -> {
score.clear();
exped = null;
map = null;
}, 5 * 60 * 1000);
}
}

View File

@@ -1,6 +1,5 @@
package server.partyquest;
import java.util.concurrent.ScheduledFuture;
import client.MapleCharacter;
import config.YamlConfig;
import constants.string.LanguageConstants;
@@ -13,6 +12,8 @@ import server.maps.MapleMap;
import server.maps.MapleReactor;
import tools.MaplePacketCreator;
import java.util.concurrent.ScheduledFuture;
/**
* @author Drago (Dragohe4rt)
*/
@@ -95,24 +96,9 @@ public class MonsterCarnival {
// thanks Atoot, Vcoc for noting double CPQ functional being sent to players in CPQ start
timer = TimerManager.getInstance().schedule(new Runnable() {
@Override
public void run() {
timeUp();
}
}, map.getTimeDefault() * 1000); // thanks Atoot for noticing an irregular "event extended" issue here
effectTimer = TimerManager.getInstance().schedule(new Runnable() {
@Override
public void run() {
complete();
}
}, map.getTimeDefault() * 1000 - 10 * 1000);
respawnTask = TimerManager.getInstance().register(new Runnable() {
@Override
public void run() {
respawn();
}
}, YamlConfig.config.server.RESPAWN_INTERVAL);
timer = TimerManager.getInstance().schedule(() -> timeUp(), map.getTimeDefault() * 1000); // thanks Atoot for noticing an irregular "event extended" issue here
effectTimer = TimerManager.getInstance().schedule(() -> complete(), map.getTimeDefault() * 1000 - 10 * 1000);
respawnTask = TimerManager.getInstance().register(() -> respawn(), YamlConfig.config.server.RESPAWN_INTERVAL);
cs.initMonsterCarnival(cpq1, room);
} catch (Exception e) {
@@ -362,19 +348,8 @@ public class MonsterCarnival {
map.broadcastMessage(MaplePacketCreator.getClock(3 * 60));
timer = TimerManager.getInstance().schedule(new Runnable() {
@Override
public void run() {
timeUp();
}
}, map.getTimeExpand() * 1000);
effectTimer = TimerManager.getInstance().schedule(new Runnable() {
@Override
public void run() {
complete();
}
}, map.getTimeExpand() * 1000 - 10 * 1000); // thanks Vcoc for noticing a time set issue here
timer = TimerManager.getInstance().schedule(() -> timeUp(), map.getTimeExpand() * 1000);
effectTimer = TimerManager.getInstance().schedule(() -> complete(), map.getTimeExpand() * 1000 - 10 * 1000); // thanks Vcoc for noticing a time set issue here
}
public void complete() {

View File

@@ -23,12 +23,13 @@
package server.partyquest;
import client.MapleCharacter;
import java.util.concurrent.ScheduledFuture;
import net.server.world.MapleParty;
import server.MapleItemInformationProvider;
import server.TimerManager;
import tools.MaplePacketCreator;
import java.util.concurrent.ScheduledFuture;
/**
*
* @author kevintjuh93
@@ -79,13 +80,10 @@ public class Pyramid extends PartyQuest {
if (gaugeSchedule == null) {
gauge = 100;
count = 0;
gaugeSchedule = TimerManager.getInstance().register(new Runnable() {
@Override
public void run() {
gauge -= decrease;
if (gauge <= 0) warp(926010001);
gaugeSchedule = TimerManager.getInstance().register(() -> {
gauge -= decrease;
if (gauge <= 0) warp(926010001);
}
}, 1000);
}
}
@@ -125,13 +123,10 @@ public class Pyramid extends PartyQuest {
else
value = 120;
timer = TimerManager.getInstance().schedule(new Runnable() {
@Override
public void run() {
stage++;
warp(map + (stage * 100));//Should work :D
}
}, value * 1000);//, 4000
timer = TimerManager.getInstance().schedule(() -> {
stage++;
warp(map + (stage * 100));//Should work :D
}, value * 1000);//, 4000
broadcastInfo("party", getParticipants().size() > 1 ? 1 : 0);
broadcastInfo("hit", kill);
broadcastInfo("miss", miss);

View File

@@ -25,15 +25,10 @@ import client.MapleCharacter;
import client.MapleClient;
import client.inventory.Item;
import client.inventory.MapleInventoryType;
import client.inventory.manipulator.MapleInventoryManipulator;
import constants.inventory.ItemConstants;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.LinkedList;
import java.util.List;
import provider.MapleData;
import provider.MapleDataTool;
import client.inventory.manipulator.MapleInventoryManipulator;
import server.MapleItemInformationProvider;
import server.quest.MapleQuest;
import server.quest.MapleQuestActionType;
@@ -42,6 +37,11 @@ import tools.MaplePacketCreator;
import tools.Pair;
import tools.Randomizer;
import java.util.ArrayList;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
/**
*
* @author Tyler (Twdtwd)
@@ -79,14 +79,7 @@ public class ItemAction extends MapleQuestAction {
items.add(new ItemData(Integer.parseInt(iEntry.getName()), id, count, prop, job, gender, period));
}
Collections.sort(items, new Comparator<ItemData>()
{
@Override
public int compare( ItemData o1, ItemData o2 )
{
return o1.map - o2.map;
}
});
Collections.sort(items, (o1, o2) -> o1.map - o2.map);
}
@Override