Event spawns must initialize after server loads scripts.

This commit is contained in:
MobiusDevelopment
2022-09-17 21:22:45 +00:00
parent cbeca82b65
commit 7d1f592980
27 changed files with 675 additions and 162 deletions

View File

@@ -28,6 +28,7 @@ import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Locale; import java.util.Locale;
import java.util.Set; import java.util.Set;
import java.util.function.Consumer;
import org.w3c.dom.Document; import org.w3c.dom.Document;
import org.w3c.dom.Node; import org.w3c.dom.Node;
@@ -44,6 +45,10 @@ import org.l2jmobius.gameserver.model.Location;
import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.announce.EventAnnouncement; import org.l2jmobius.gameserver.model.announce.EventAnnouncement;
import org.l2jmobius.gameserver.model.events.Containers;
import org.l2jmobius.gameserver.model.events.EventType;
import org.l2jmobius.gameserver.model.events.impl.OnServerStart;
import org.l2jmobius.gameserver.model.events.listeners.ConsumerEventListener;
import org.l2jmobius.gameserver.model.holders.EventDropHolder; import org.l2jmobius.gameserver.model.holders.EventDropHolder;
import org.l2jmobius.gameserver.script.DateRange; import org.l2jmobius.gameserver.script.DateRange;
import org.l2jmobius.gameserver.util.Broadcast; import org.l2jmobius.gameserver.util.Broadcast;
@@ -65,13 +70,13 @@ public class LongTimeEvent extends Quest
protected String _endMsg = ""; protected String _endMsg = "";
protected int _enterAnnounceId = -1; protected int _enterAnnounceId = -1;
// NPCs to spawm and their spawn points // NPCs to spawn and their spawn points
protected final List<NpcSpawn> _spawnList = new ArrayList<>(); protected final List<NpcSpawn> _spawnList = new ArrayList<>();
// Drop data for event // Drop data for event
protected final List<EventDropHolder> _dropList = new ArrayList<>(); protected final List<EventDropHolder> _dropList = new ArrayList<>();
// Items to destroy when event ends. // Items to destroy when event ends
protected final List<Integer> _destroyItemsOnEnd = new ArrayList<>(); protected final List<Integer> _destroyItemsOnEnd = new ArrayList<>();
protected class NpcSpawn protected class NpcSpawn
@@ -325,11 +330,10 @@ public class LongTimeEvent extends Quest
// Add event drops. // Add event drops.
EventDropManager.getInstance().addDrops(this, _dropList); EventDropManager.getInstance().addDrops(this, _dropList);
// Add spawns. // Add spawns on server start.
final Long millisToEventEnd = _eventPeriod.getEndDate().getTime() - System.currentTimeMillis(); if (!_spawnList.isEmpty())
for (NpcSpawn spawn : _spawnList)
{ {
addSpawn(spawn.npcId, spawn.loc.getX(), spawn.loc.getY(), spawn.loc.getZ(), spawn.loc.getHeading(), false, millisToEventEnd, false); Containers.Global().addListener(new ConsumerEventListener(Containers.Global(), EventType.ON_SERVER_START, _spawnNpcs, this));
} }
// Enable town shrines. // Enable town shrines.
@@ -351,9 +355,24 @@ public class LongTimeEvent extends Quest
} }
// Schedule event end. // Schedule event end.
final Long millisToEventEnd = _eventPeriod.getEndDate().getTime() - System.currentTimeMillis();
ThreadPool.schedule(new ScheduleEnd(), millisToEventEnd); ThreadPool.schedule(new ScheduleEnd(), millisToEventEnd);
} }
/**
* Event spawns must initialize after server loads scripts.
*/
private final Consumer<OnServerStart> _spawnNpcs = event ->
{
final Long millisToEventEnd = _eventPeriod.getEndDate().getTime() - System.currentTimeMillis();
for (NpcSpawn spawn : _spawnList)
{
addSpawn(spawn.npcId, spawn.loc.getX(), spawn.loc.getY(), spawn.loc.getZ(), spawn.loc.getHeading(), false, millisToEventEnd, false);
}
Containers.Global().removeListenerIf(EventType.ON_SERVER_START, listener -> listener.getOwner() == this);
};
protected class ScheduleEnd implements Runnable protected class ScheduleEnd implements Runnable
{ {
@Override @Override

View File

@@ -28,6 +28,7 @@ import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Locale; import java.util.Locale;
import java.util.Set; import java.util.Set;
import java.util.function.Consumer;
import org.w3c.dom.Document; import org.w3c.dom.Document;
import org.w3c.dom.Node; import org.w3c.dom.Node;
@@ -44,6 +45,10 @@ import org.l2jmobius.gameserver.model.Location;
import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.announce.EventAnnouncement; import org.l2jmobius.gameserver.model.announce.EventAnnouncement;
import org.l2jmobius.gameserver.model.events.Containers;
import org.l2jmobius.gameserver.model.events.EventType;
import org.l2jmobius.gameserver.model.events.impl.OnServerStart;
import org.l2jmobius.gameserver.model.events.listeners.ConsumerEventListener;
import org.l2jmobius.gameserver.model.holders.EventDropHolder; import org.l2jmobius.gameserver.model.holders.EventDropHolder;
import org.l2jmobius.gameserver.script.DateRange; import org.l2jmobius.gameserver.script.DateRange;
import org.l2jmobius.gameserver.util.Broadcast; import org.l2jmobius.gameserver.util.Broadcast;
@@ -65,13 +70,13 @@ public class LongTimeEvent extends Quest
protected String _endMsg = ""; protected String _endMsg = "";
protected int _enterAnnounceId = -1; protected int _enterAnnounceId = -1;
// NPCs to spawm and their spawn points // NPCs to spawn and their spawn points
protected final List<NpcSpawn> _spawnList = new ArrayList<>(); protected final List<NpcSpawn> _spawnList = new ArrayList<>();
// Drop data for event // Drop data for event
protected final List<EventDropHolder> _dropList = new ArrayList<>(); protected final List<EventDropHolder> _dropList = new ArrayList<>();
// Items to destroy when event ends. // Items to destroy when event ends
protected final List<Integer> _destroyItemsOnEnd = new ArrayList<>(); protected final List<Integer> _destroyItemsOnEnd = new ArrayList<>();
protected class NpcSpawn protected class NpcSpawn
@@ -325,11 +330,10 @@ public class LongTimeEvent extends Quest
// Add event drops. // Add event drops.
EventDropManager.getInstance().addDrops(this, _dropList); EventDropManager.getInstance().addDrops(this, _dropList);
// Add spawns. // Add spawns on server start.
final Long millisToEventEnd = _eventPeriod.getEndDate().getTime() - System.currentTimeMillis(); if (!_spawnList.isEmpty())
for (NpcSpawn spawn : _spawnList)
{ {
addSpawn(spawn.npcId, spawn.loc.getX(), spawn.loc.getY(), spawn.loc.getZ(), spawn.loc.getHeading(), false, millisToEventEnd, false); Containers.Global().addListener(new ConsumerEventListener(Containers.Global(), EventType.ON_SERVER_START, _spawnNpcs, this));
} }
// Enable town shrines. // Enable town shrines.
@@ -351,9 +355,24 @@ public class LongTimeEvent extends Quest
} }
// Schedule event end. // Schedule event end.
final Long millisToEventEnd = _eventPeriod.getEndDate().getTime() - System.currentTimeMillis();
ThreadPool.schedule(new ScheduleEnd(), millisToEventEnd); ThreadPool.schedule(new ScheduleEnd(), millisToEventEnd);
} }
/**
* Event spawns must initialize after server loads scripts.
*/
private final Consumer<OnServerStart> _spawnNpcs = event ->
{
final Long millisToEventEnd = _eventPeriod.getEndDate().getTime() - System.currentTimeMillis();
for (NpcSpawn spawn : _spawnList)
{
addSpawn(spawn.npcId, spawn.loc.getX(), spawn.loc.getY(), spawn.loc.getZ(), spawn.loc.getHeading(), false, millisToEventEnd, false);
}
Containers.Global().removeListenerIf(EventType.ON_SERVER_START, listener -> listener.getOwner() == this);
};
protected class ScheduleEnd implements Runnable protected class ScheduleEnd implements Runnable
{ {
@Override @Override

View File

@@ -28,6 +28,7 @@ import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Locale; import java.util.Locale;
import java.util.Set; import java.util.Set;
import java.util.function.Consumer;
import org.w3c.dom.Document; import org.w3c.dom.Document;
import org.w3c.dom.Node; import org.w3c.dom.Node;
@@ -44,6 +45,10 @@ import org.l2jmobius.gameserver.model.Location;
import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.announce.EventAnnouncement; import org.l2jmobius.gameserver.model.announce.EventAnnouncement;
import org.l2jmobius.gameserver.model.events.Containers;
import org.l2jmobius.gameserver.model.events.EventType;
import org.l2jmobius.gameserver.model.events.impl.OnServerStart;
import org.l2jmobius.gameserver.model.events.listeners.ConsumerEventListener;
import org.l2jmobius.gameserver.model.holders.EventDropHolder; import org.l2jmobius.gameserver.model.holders.EventDropHolder;
import org.l2jmobius.gameserver.script.DateRange; import org.l2jmobius.gameserver.script.DateRange;
import org.l2jmobius.gameserver.util.Broadcast; import org.l2jmobius.gameserver.util.Broadcast;
@@ -65,13 +70,13 @@ public class LongTimeEvent extends Quest
protected String _endMsg = ""; protected String _endMsg = "";
protected int _enterAnnounceId = -1; protected int _enterAnnounceId = -1;
// NPCs to spawm and their spawn points // NPCs to spawn and their spawn points
protected final List<NpcSpawn> _spawnList = new ArrayList<>(); protected final List<NpcSpawn> _spawnList = new ArrayList<>();
// Drop data for event // Drop data for event
protected final List<EventDropHolder> _dropList = new ArrayList<>(); protected final List<EventDropHolder> _dropList = new ArrayList<>();
// Items to destroy when event ends. // Items to destroy when event ends
protected final List<Integer> _destroyItemsOnEnd = new ArrayList<>(); protected final List<Integer> _destroyItemsOnEnd = new ArrayList<>();
protected class NpcSpawn protected class NpcSpawn
@@ -325,11 +330,10 @@ public class LongTimeEvent extends Quest
// Add event drops. // Add event drops.
EventDropManager.getInstance().addDrops(this, _dropList); EventDropManager.getInstance().addDrops(this, _dropList);
// Add spawns. // Add spawns on server start.
final Long millisToEventEnd = _eventPeriod.getEndDate().getTime() - System.currentTimeMillis(); if (!_spawnList.isEmpty())
for (NpcSpawn spawn : _spawnList)
{ {
addSpawn(spawn.npcId, spawn.loc.getX(), spawn.loc.getY(), spawn.loc.getZ(), spawn.loc.getHeading(), false, millisToEventEnd, false); Containers.Global().addListener(new ConsumerEventListener(Containers.Global(), EventType.ON_SERVER_START, _spawnNpcs, this));
} }
// Enable town shrines. // Enable town shrines.
@@ -351,9 +355,24 @@ public class LongTimeEvent extends Quest
} }
// Schedule event end. // Schedule event end.
final Long millisToEventEnd = _eventPeriod.getEndDate().getTime() - System.currentTimeMillis();
ThreadPool.schedule(new ScheduleEnd(), millisToEventEnd); ThreadPool.schedule(new ScheduleEnd(), millisToEventEnd);
} }
/**
* Event spawns must initialize after server loads scripts.
*/
private final Consumer<OnServerStart> _spawnNpcs = event ->
{
final Long millisToEventEnd = _eventPeriod.getEndDate().getTime() - System.currentTimeMillis();
for (NpcSpawn spawn : _spawnList)
{
addSpawn(spawn.npcId, spawn.loc.getX(), spawn.loc.getY(), spawn.loc.getZ(), spawn.loc.getHeading(), false, millisToEventEnd, false);
}
Containers.Global().removeListenerIf(EventType.ON_SERVER_START, listener -> listener.getOwner() == this);
};
protected class ScheduleEnd implements Runnable protected class ScheduleEnd implements Runnable
{ {
@Override @Override

View File

@@ -28,6 +28,7 @@ import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Locale; import java.util.Locale;
import java.util.Set; import java.util.Set;
import java.util.function.Consumer;
import org.w3c.dom.Document; import org.w3c.dom.Document;
import org.w3c.dom.Node; import org.w3c.dom.Node;
@@ -44,6 +45,10 @@ import org.l2jmobius.gameserver.model.Location;
import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.announce.EventAnnouncement; import org.l2jmobius.gameserver.model.announce.EventAnnouncement;
import org.l2jmobius.gameserver.model.events.Containers;
import org.l2jmobius.gameserver.model.events.EventType;
import org.l2jmobius.gameserver.model.events.impl.OnServerStart;
import org.l2jmobius.gameserver.model.events.listeners.ConsumerEventListener;
import org.l2jmobius.gameserver.model.holders.EventDropHolder; import org.l2jmobius.gameserver.model.holders.EventDropHolder;
import org.l2jmobius.gameserver.script.DateRange; import org.l2jmobius.gameserver.script.DateRange;
import org.l2jmobius.gameserver.util.Broadcast; import org.l2jmobius.gameserver.util.Broadcast;
@@ -65,13 +70,13 @@ public class LongTimeEvent extends Quest
protected String _endMsg = ""; protected String _endMsg = "";
protected int _enterAnnounceId = -1; protected int _enterAnnounceId = -1;
// NPCs to spawm and their spawn points // NPCs to spawn and their spawn points
protected final List<NpcSpawn> _spawnList = new ArrayList<>(); protected final List<NpcSpawn> _spawnList = new ArrayList<>();
// Drop data for event // Drop data for event
protected final List<EventDropHolder> _dropList = new ArrayList<>(); protected final List<EventDropHolder> _dropList = new ArrayList<>();
// Items to destroy when event ends. // Items to destroy when event ends
protected final List<Integer> _destroyItemsOnEnd = new ArrayList<>(); protected final List<Integer> _destroyItemsOnEnd = new ArrayList<>();
protected class NpcSpawn protected class NpcSpawn
@@ -325,11 +330,10 @@ public class LongTimeEvent extends Quest
// Add event drops. // Add event drops.
EventDropManager.getInstance().addDrops(this, _dropList); EventDropManager.getInstance().addDrops(this, _dropList);
// Add spawns. // Add spawns on server start.
final Long millisToEventEnd = _eventPeriod.getEndDate().getTime() - System.currentTimeMillis(); if (!_spawnList.isEmpty())
for (NpcSpawn spawn : _spawnList)
{ {
addSpawn(spawn.npcId, spawn.loc.getX(), spawn.loc.getY(), spawn.loc.getZ(), spawn.loc.getHeading(), false, millisToEventEnd, false); Containers.Global().addListener(new ConsumerEventListener(Containers.Global(), EventType.ON_SERVER_START, _spawnNpcs, this));
} }
// Enable town shrines. // Enable town shrines.
@@ -351,9 +355,24 @@ public class LongTimeEvent extends Quest
} }
// Schedule event end. // Schedule event end.
final Long millisToEventEnd = _eventPeriod.getEndDate().getTime() - System.currentTimeMillis();
ThreadPool.schedule(new ScheduleEnd(), millisToEventEnd); ThreadPool.schedule(new ScheduleEnd(), millisToEventEnd);
} }
/**
* Event spawns must initialize after server loads scripts.
*/
private final Consumer<OnServerStart> _spawnNpcs = event ->
{
final Long millisToEventEnd = _eventPeriod.getEndDate().getTime() - System.currentTimeMillis();
for (NpcSpawn spawn : _spawnList)
{
addSpawn(spawn.npcId, spawn.loc.getX(), spawn.loc.getY(), spawn.loc.getZ(), spawn.loc.getHeading(), false, millisToEventEnd, false);
}
Containers.Global().removeListenerIf(EventType.ON_SERVER_START, listener -> listener.getOwner() == this);
};
protected class ScheduleEnd implements Runnable protected class ScheduleEnd implements Runnable
{ {
@Override @Override

View File

@@ -28,6 +28,7 @@ import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Locale; import java.util.Locale;
import java.util.Set; import java.util.Set;
import java.util.function.Consumer;
import org.w3c.dom.Document; import org.w3c.dom.Document;
import org.w3c.dom.Node; import org.w3c.dom.Node;
@@ -44,6 +45,10 @@ import org.l2jmobius.gameserver.model.Location;
import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.announce.EventAnnouncement; import org.l2jmobius.gameserver.model.announce.EventAnnouncement;
import org.l2jmobius.gameserver.model.events.Containers;
import org.l2jmobius.gameserver.model.events.EventType;
import org.l2jmobius.gameserver.model.events.impl.OnServerStart;
import org.l2jmobius.gameserver.model.events.listeners.ConsumerEventListener;
import org.l2jmobius.gameserver.model.holders.EventDropHolder; import org.l2jmobius.gameserver.model.holders.EventDropHolder;
import org.l2jmobius.gameserver.script.DateRange; import org.l2jmobius.gameserver.script.DateRange;
import org.l2jmobius.gameserver.util.Broadcast; import org.l2jmobius.gameserver.util.Broadcast;
@@ -65,13 +70,13 @@ public class LongTimeEvent extends Quest
protected String _endMsg = ""; protected String _endMsg = "";
protected int _enterAnnounceId = -1; protected int _enterAnnounceId = -1;
// NPCs to spawm and their spawn points // NPCs to spawn and their spawn points
protected final List<NpcSpawn> _spawnList = new ArrayList<>(); protected final List<NpcSpawn> _spawnList = new ArrayList<>();
// Drop data for event // Drop data for event
protected final List<EventDropHolder> _dropList = new ArrayList<>(); protected final List<EventDropHolder> _dropList = new ArrayList<>();
// Items to destroy when event ends. // Items to destroy when event ends
protected final List<Integer> _destroyItemsOnEnd = new ArrayList<>(); protected final List<Integer> _destroyItemsOnEnd = new ArrayList<>();
protected class NpcSpawn protected class NpcSpawn
@@ -325,11 +330,10 @@ public class LongTimeEvent extends Quest
// Add event drops. // Add event drops.
EventDropManager.getInstance().addDrops(this, _dropList); EventDropManager.getInstance().addDrops(this, _dropList);
// Add spawns. // Add spawns on server start.
final Long millisToEventEnd = _eventPeriod.getEndDate().getTime() - System.currentTimeMillis(); if (!_spawnList.isEmpty())
for (NpcSpawn spawn : _spawnList)
{ {
addSpawn(spawn.npcId, spawn.loc.getX(), spawn.loc.getY(), spawn.loc.getZ(), spawn.loc.getHeading(), false, millisToEventEnd, false); Containers.Global().addListener(new ConsumerEventListener(Containers.Global(), EventType.ON_SERVER_START, _spawnNpcs, this));
} }
// Enable town shrines. // Enable town shrines.
@@ -351,9 +355,24 @@ public class LongTimeEvent extends Quest
} }
// Schedule event end. // Schedule event end.
final Long millisToEventEnd = _eventPeriod.getEndDate().getTime() - System.currentTimeMillis();
ThreadPool.schedule(new ScheduleEnd(), millisToEventEnd); ThreadPool.schedule(new ScheduleEnd(), millisToEventEnd);
} }
/**
* Event spawns must initialize after server loads scripts.
*/
private final Consumer<OnServerStart> _spawnNpcs = event ->
{
final Long millisToEventEnd = _eventPeriod.getEndDate().getTime() - System.currentTimeMillis();
for (NpcSpawn spawn : _spawnList)
{
addSpawn(spawn.npcId, spawn.loc.getX(), spawn.loc.getY(), spawn.loc.getZ(), spawn.loc.getHeading(), false, millisToEventEnd, false);
}
Containers.Global().removeListenerIf(EventType.ON_SERVER_START, listener -> listener.getOwner() == this);
};
protected class ScheduleEnd implements Runnable protected class ScheduleEnd implements Runnable
{ {
@Override @Override

View File

@@ -28,6 +28,7 @@ import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Locale; import java.util.Locale;
import java.util.Set; import java.util.Set;
import java.util.function.Consumer;
import org.w3c.dom.Document; import org.w3c.dom.Document;
import org.w3c.dom.Node; import org.w3c.dom.Node;
@@ -44,6 +45,10 @@ import org.l2jmobius.gameserver.model.Location;
import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.announce.EventAnnouncement; import org.l2jmobius.gameserver.model.announce.EventAnnouncement;
import org.l2jmobius.gameserver.model.events.Containers;
import org.l2jmobius.gameserver.model.events.EventType;
import org.l2jmobius.gameserver.model.events.impl.OnServerStart;
import org.l2jmobius.gameserver.model.events.listeners.ConsumerEventListener;
import org.l2jmobius.gameserver.model.holders.EventDropHolder; import org.l2jmobius.gameserver.model.holders.EventDropHolder;
import org.l2jmobius.gameserver.script.DateRange; import org.l2jmobius.gameserver.script.DateRange;
import org.l2jmobius.gameserver.util.Broadcast; import org.l2jmobius.gameserver.util.Broadcast;
@@ -65,13 +70,13 @@ public class LongTimeEvent extends Quest
protected String _endMsg = ""; protected String _endMsg = "";
protected int _enterAnnounceId = -1; protected int _enterAnnounceId = -1;
// NPCs to spawm and their spawn points // NPCs to spawn and their spawn points
protected final List<NpcSpawn> _spawnList = new ArrayList<>(); protected final List<NpcSpawn> _spawnList = new ArrayList<>();
// Drop data for event // Drop data for event
protected final List<EventDropHolder> _dropList = new ArrayList<>(); protected final List<EventDropHolder> _dropList = new ArrayList<>();
// Items to destroy when event ends. // Items to destroy when event ends
protected final List<Integer> _destroyItemsOnEnd = new ArrayList<>(); protected final List<Integer> _destroyItemsOnEnd = new ArrayList<>();
protected class NpcSpawn protected class NpcSpawn
@@ -325,11 +330,10 @@ public class LongTimeEvent extends Quest
// Add event drops. // Add event drops.
EventDropManager.getInstance().addDrops(this, _dropList); EventDropManager.getInstance().addDrops(this, _dropList);
// Add spawns. // Add spawns on server start.
final Long millisToEventEnd = _eventPeriod.getEndDate().getTime() - System.currentTimeMillis(); if (!_spawnList.isEmpty())
for (NpcSpawn spawn : _spawnList)
{ {
addSpawn(spawn.npcId, spawn.loc.getX(), spawn.loc.getY(), spawn.loc.getZ(), spawn.loc.getHeading(), false, millisToEventEnd, false); Containers.Global().addListener(new ConsumerEventListener(Containers.Global(), EventType.ON_SERVER_START, _spawnNpcs, this));
} }
// Enable town shrines. // Enable town shrines.
@@ -351,9 +355,24 @@ public class LongTimeEvent extends Quest
} }
// Schedule event end. // Schedule event end.
final Long millisToEventEnd = _eventPeriod.getEndDate().getTime() - System.currentTimeMillis();
ThreadPool.schedule(new ScheduleEnd(), millisToEventEnd); ThreadPool.schedule(new ScheduleEnd(), millisToEventEnd);
} }
/**
* Event spawns must initialize after server loads scripts.
*/
private final Consumer<OnServerStart> _spawnNpcs = event ->
{
final Long millisToEventEnd = _eventPeriod.getEndDate().getTime() - System.currentTimeMillis();
for (NpcSpawn spawn : _spawnList)
{
addSpawn(spawn.npcId, spawn.loc.getX(), spawn.loc.getY(), spawn.loc.getZ(), spawn.loc.getHeading(), false, millisToEventEnd, false);
}
Containers.Global().removeListenerIf(EventType.ON_SERVER_START, listener -> listener.getOwner() == this);
};
protected class ScheduleEnd implements Runnable protected class ScheduleEnd implements Runnable
{ {
@Override @Override

View File

@@ -28,6 +28,7 @@ import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Locale; import java.util.Locale;
import java.util.Set; import java.util.Set;
import java.util.function.Consumer;
import org.w3c.dom.Document; import org.w3c.dom.Document;
import org.w3c.dom.Node; import org.w3c.dom.Node;
@@ -44,6 +45,10 @@ import org.l2jmobius.gameserver.model.Location;
import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.announce.EventAnnouncement; import org.l2jmobius.gameserver.model.announce.EventAnnouncement;
import org.l2jmobius.gameserver.model.events.Containers;
import org.l2jmobius.gameserver.model.events.EventType;
import org.l2jmobius.gameserver.model.events.impl.OnServerStart;
import org.l2jmobius.gameserver.model.events.listeners.ConsumerEventListener;
import org.l2jmobius.gameserver.model.holders.EventDropHolder; import org.l2jmobius.gameserver.model.holders.EventDropHolder;
import org.l2jmobius.gameserver.script.DateRange; import org.l2jmobius.gameserver.script.DateRange;
import org.l2jmobius.gameserver.util.Broadcast; import org.l2jmobius.gameserver.util.Broadcast;
@@ -65,13 +70,13 @@ public class LongTimeEvent extends Quest
protected String _endMsg = ""; protected String _endMsg = "";
protected int _enterAnnounceId = -1; protected int _enterAnnounceId = -1;
// NPCs to spawm and their spawn points // NPCs to spawn and their spawn points
protected final List<NpcSpawn> _spawnList = new ArrayList<>(); protected final List<NpcSpawn> _spawnList = new ArrayList<>();
// Drop data for event // Drop data for event
protected final List<EventDropHolder> _dropList = new ArrayList<>(); protected final List<EventDropHolder> _dropList = new ArrayList<>();
// Items to destroy when event ends. // Items to destroy when event ends
protected final List<Integer> _destroyItemsOnEnd = new ArrayList<>(); protected final List<Integer> _destroyItemsOnEnd = new ArrayList<>();
protected class NpcSpawn protected class NpcSpawn
@@ -325,11 +330,10 @@ public class LongTimeEvent extends Quest
// Add event drops. // Add event drops.
EventDropManager.getInstance().addDrops(this, _dropList); EventDropManager.getInstance().addDrops(this, _dropList);
// Add spawns. // Add spawns on server start.
final Long millisToEventEnd = _eventPeriod.getEndDate().getTime() - System.currentTimeMillis(); if (!_spawnList.isEmpty())
for (NpcSpawn spawn : _spawnList)
{ {
addSpawn(spawn.npcId, spawn.loc.getX(), spawn.loc.getY(), spawn.loc.getZ(), spawn.loc.getHeading(), false, millisToEventEnd, false); Containers.Global().addListener(new ConsumerEventListener(Containers.Global(), EventType.ON_SERVER_START, _spawnNpcs, this));
} }
// Enable town shrines. // Enable town shrines.
@@ -351,9 +355,24 @@ public class LongTimeEvent extends Quest
} }
// Schedule event end. // Schedule event end.
final Long millisToEventEnd = _eventPeriod.getEndDate().getTime() - System.currentTimeMillis();
ThreadPool.schedule(new ScheduleEnd(), millisToEventEnd); ThreadPool.schedule(new ScheduleEnd(), millisToEventEnd);
} }
/**
* Event spawns must initialize after server loads scripts.
*/
private final Consumer<OnServerStart> _spawnNpcs = event ->
{
final Long millisToEventEnd = _eventPeriod.getEndDate().getTime() - System.currentTimeMillis();
for (NpcSpawn spawn : _spawnList)
{
addSpawn(spawn.npcId, spawn.loc.getX(), spawn.loc.getY(), spawn.loc.getZ(), spawn.loc.getHeading(), false, millisToEventEnd, false);
}
Containers.Global().removeListenerIf(EventType.ON_SERVER_START, listener -> listener.getOwner() == this);
};
protected class ScheduleEnd implements Runnable protected class ScheduleEnd implements Runnable
{ {
@Override @Override

View File

@@ -28,6 +28,7 @@ import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Locale; import java.util.Locale;
import java.util.Set; import java.util.Set;
import java.util.function.Consumer;
import org.w3c.dom.Document; import org.w3c.dom.Document;
import org.w3c.dom.Node; import org.w3c.dom.Node;
@@ -44,6 +45,10 @@ import org.l2jmobius.gameserver.model.Location;
import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.announce.EventAnnouncement; import org.l2jmobius.gameserver.model.announce.EventAnnouncement;
import org.l2jmobius.gameserver.model.events.Containers;
import org.l2jmobius.gameserver.model.events.EventType;
import org.l2jmobius.gameserver.model.events.impl.OnServerStart;
import org.l2jmobius.gameserver.model.events.listeners.ConsumerEventListener;
import org.l2jmobius.gameserver.model.holders.EventDropHolder; import org.l2jmobius.gameserver.model.holders.EventDropHolder;
import org.l2jmobius.gameserver.script.DateRange; import org.l2jmobius.gameserver.script.DateRange;
import org.l2jmobius.gameserver.util.Broadcast; import org.l2jmobius.gameserver.util.Broadcast;
@@ -65,13 +70,13 @@ public class LongTimeEvent extends Quest
protected String _endMsg = ""; protected String _endMsg = "";
protected int _enterAnnounceId = -1; protected int _enterAnnounceId = -1;
// NPCs to spawm and their spawn points // NPCs to spawn and their spawn points
protected final List<NpcSpawn> _spawnList = new ArrayList<>(); protected final List<NpcSpawn> _spawnList = new ArrayList<>();
// Drop data for event // Drop data for event
protected final List<EventDropHolder> _dropList = new ArrayList<>(); protected final List<EventDropHolder> _dropList = new ArrayList<>();
// Items to destroy when event ends. // Items to destroy when event ends
protected final List<Integer> _destroyItemsOnEnd = new ArrayList<>(); protected final List<Integer> _destroyItemsOnEnd = new ArrayList<>();
protected class NpcSpawn protected class NpcSpawn
@@ -325,11 +330,10 @@ public class LongTimeEvent extends Quest
// Add event drops. // Add event drops.
EventDropManager.getInstance().addDrops(this, _dropList); EventDropManager.getInstance().addDrops(this, _dropList);
// Add spawns. // Add spawns on server start.
final Long millisToEventEnd = _eventPeriod.getEndDate().getTime() - System.currentTimeMillis(); if (!_spawnList.isEmpty())
for (NpcSpawn spawn : _spawnList)
{ {
addSpawn(spawn.npcId, spawn.loc.getX(), spawn.loc.getY(), spawn.loc.getZ(), spawn.loc.getHeading(), false, millisToEventEnd, false); Containers.Global().addListener(new ConsumerEventListener(Containers.Global(), EventType.ON_SERVER_START, _spawnNpcs, this));
} }
// Enable town shrines. // Enable town shrines.
@@ -351,9 +355,24 @@ public class LongTimeEvent extends Quest
} }
// Schedule event end. // Schedule event end.
final Long millisToEventEnd = _eventPeriod.getEndDate().getTime() - System.currentTimeMillis();
ThreadPool.schedule(new ScheduleEnd(), millisToEventEnd); ThreadPool.schedule(new ScheduleEnd(), millisToEventEnd);
} }
/**
* Event spawns must initialize after server loads scripts.
*/
private final Consumer<OnServerStart> _spawnNpcs = event ->
{
final Long millisToEventEnd = _eventPeriod.getEndDate().getTime() - System.currentTimeMillis();
for (NpcSpawn spawn : _spawnList)
{
addSpawn(spawn.npcId, spawn.loc.getX(), spawn.loc.getY(), spawn.loc.getZ(), spawn.loc.getHeading(), false, millisToEventEnd, false);
}
Containers.Global().removeListenerIf(EventType.ON_SERVER_START, listener -> listener.getOwner() == this);
};
protected class ScheduleEnd implements Runnable protected class ScheduleEnd implements Runnable
{ {
@Override @Override

View File

@@ -28,6 +28,7 @@ import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Locale; import java.util.Locale;
import java.util.Set; import java.util.Set;
import java.util.function.Consumer;
import org.w3c.dom.Document; import org.w3c.dom.Document;
import org.w3c.dom.Node; import org.w3c.dom.Node;
@@ -45,6 +46,10 @@ import org.l2jmobius.gameserver.model.Location;
import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.announce.EventAnnouncement; import org.l2jmobius.gameserver.model.announce.EventAnnouncement;
import org.l2jmobius.gameserver.model.events.Containers;
import org.l2jmobius.gameserver.model.events.EventType;
import org.l2jmobius.gameserver.model.events.impl.OnServerStart;
import org.l2jmobius.gameserver.model.events.listeners.ConsumerEventListener;
import org.l2jmobius.gameserver.model.holders.EventDropHolder; import org.l2jmobius.gameserver.model.holders.EventDropHolder;
import org.l2jmobius.gameserver.script.DateRange; import org.l2jmobius.gameserver.script.DateRange;
import org.l2jmobius.gameserver.util.Broadcast; import org.l2jmobius.gameserver.util.Broadcast;
@@ -66,13 +71,13 @@ public class LongTimeEvent extends Quest
protected String _endMsg = ""; protected String _endMsg = "";
protected int _enterAnnounceId = -1; protected int _enterAnnounceId = -1;
// NPCs to spawm and their spawn points // NPCs to spawn and their spawn points
protected final List<NpcSpawn> _spawnList = new ArrayList<>(); protected final List<NpcSpawn> _spawnList = new ArrayList<>();
// Drop data for event // Drop data for event
protected final List<EventDropHolder> _dropList = new ArrayList<>(); protected final List<EventDropHolder> _dropList = new ArrayList<>();
// Items to destroy when event ends. // Items to destroy when event ends
protected final List<Integer> _destroyItemsOnEnd = new ArrayList<>(); protected final List<Integer> _destroyItemsOnEnd = new ArrayList<>();
protected class NpcSpawn protected class NpcSpawn
@@ -333,11 +338,10 @@ public class LongTimeEvent extends Quest
// Add event drops. // Add event drops.
EventDropManager.getInstance().addDrops(this, _dropList); EventDropManager.getInstance().addDrops(this, _dropList);
// Add spawns. // Add spawns on server start.
final Long millisToEventEnd = _eventPeriod.getEndDate().getTime() - System.currentTimeMillis(); if (!_spawnList.isEmpty())
for (NpcSpawn spawn : _spawnList)
{ {
addSpawn(spawn.npcId, spawn.loc.getX(), spawn.loc.getY(), spawn.loc.getZ(), spawn.loc.getHeading(), false, millisToEventEnd, false); Containers.Global().addListener(new ConsumerEventListener(Containers.Global(), EventType.ON_SERVER_START, _spawnNpcs, this));
} }
// Enable town shrines. // Enable town shrines.
@@ -359,9 +363,24 @@ public class LongTimeEvent extends Quest
} }
// Schedule event end. // Schedule event end.
final Long millisToEventEnd = _eventPeriod.getEndDate().getTime() - System.currentTimeMillis();
ThreadPool.schedule(new ScheduleEnd(), millisToEventEnd); ThreadPool.schedule(new ScheduleEnd(), millisToEventEnd);
} }
/**
* Event spawns must initialize after server loads scripts.
*/
private final Consumer<OnServerStart> _spawnNpcs = event ->
{
final Long millisToEventEnd = _eventPeriod.getEndDate().getTime() - System.currentTimeMillis();
for (NpcSpawn spawn : _spawnList)
{
addSpawn(spawn.npcId, spawn.loc.getX(), spawn.loc.getY(), spawn.loc.getZ(), spawn.loc.getHeading(), false, millisToEventEnd, false);
}
Containers.Global().removeListenerIf(EventType.ON_SERVER_START, listener -> listener.getOwner() == this);
};
protected class ScheduleEnd implements Runnable protected class ScheduleEnd implements Runnable
{ {
@Override @Override

View File

@@ -28,6 +28,7 @@ import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Locale; import java.util.Locale;
import java.util.Set; import java.util.Set;
import java.util.function.Consumer;
import org.w3c.dom.Document; import org.w3c.dom.Document;
import org.w3c.dom.Node; import org.w3c.dom.Node;
@@ -45,6 +46,10 @@ import org.l2jmobius.gameserver.model.Location;
import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.announce.EventAnnouncement; import org.l2jmobius.gameserver.model.announce.EventAnnouncement;
import org.l2jmobius.gameserver.model.events.Containers;
import org.l2jmobius.gameserver.model.events.EventType;
import org.l2jmobius.gameserver.model.events.impl.OnServerStart;
import org.l2jmobius.gameserver.model.events.listeners.ConsumerEventListener;
import org.l2jmobius.gameserver.model.holders.EventDropHolder; import org.l2jmobius.gameserver.model.holders.EventDropHolder;
import org.l2jmobius.gameserver.script.DateRange; import org.l2jmobius.gameserver.script.DateRange;
import org.l2jmobius.gameserver.util.Broadcast; import org.l2jmobius.gameserver.util.Broadcast;
@@ -66,13 +71,13 @@ public class LongTimeEvent extends Quest
protected String _endMsg = ""; protected String _endMsg = "";
protected int _enterAnnounceId = -1; protected int _enterAnnounceId = -1;
// NPCs to spawm and their spawn points // NPCs to spawn and their spawn points
protected final List<NpcSpawn> _spawnList = new ArrayList<>(); protected final List<NpcSpawn> _spawnList = new ArrayList<>();
// Drop data for event // Drop data for event
protected final List<EventDropHolder> _dropList = new ArrayList<>(); protected final List<EventDropHolder> _dropList = new ArrayList<>();
// Items to destroy when event ends. // Items to destroy when event ends
protected final List<Integer> _destroyItemsOnEnd = new ArrayList<>(); protected final List<Integer> _destroyItemsOnEnd = new ArrayList<>();
protected class NpcSpawn protected class NpcSpawn
@@ -333,11 +338,10 @@ public class LongTimeEvent extends Quest
// Add event drops. // Add event drops.
EventDropManager.getInstance().addDrops(this, _dropList); EventDropManager.getInstance().addDrops(this, _dropList);
// Add spawns. // Add spawns on server start.
final Long millisToEventEnd = _eventPeriod.getEndDate().getTime() - System.currentTimeMillis(); if (!_spawnList.isEmpty())
for (NpcSpawn spawn : _spawnList)
{ {
addSpawn(spawn.npcId, spawn.loc.getX(), spawn.loc.getY(), spawn.loc.getZ(), spawn.loc.getHeading(), false, millisToEventEnd, false); Containers.Global().addListener(new ConsumerEventListener(Containers.Global(), EventType.ON_SERVER_START, _spawnNpcs, this));
} }
// Enable town shrines. // Enable town shrines.
@@ -359,9 +363,24 @@ public class LongTimeEvent extends Quest
} }
// Schedule event end. // Schedule event end.
final Long millisToEventEnd = _eventPeriod.getEndDate().getTime() - System.currentTimeMillis();
ThreadPool.schedule(new ScheduleEnd(), millisToEventEnd); ThreadPool.schedule(new ScheduleEnd(), millisToEventEnd);
} }
/**
* Event spawns must initialize after server loads scripts.
*/
private final Consumer<OnServerStart> _spawnNpcs = event ->
{
final Long millisToEventEnd = _eventPeriod.getEndDate().getTime() - System.currentTimeMillis();
for (NpcSpawn spawn : _spawnList)
{
addSpawn(spawn.npcId, spawn.loc.getX(), spawn.loc.getY(), spawn.loc.getZ(), spawn.loc.getHeading(), false, millisToEventEnd, false);
}
Containers.Global().removeListenerIf(EventType.ON_SERVER_START, listener -> listener.getOwner() == this);
};
protected class ScheduleEnd implements Runnable protected class ScheduleEnd implements Runnable
{ {
@Override @Override

View File

@@ -28,6 +28,7 @@ import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Locale; import java.util.Locale;
import java.util.Set; import java.util.Set;
import java.util.function.Consumer;
import org.w3c.dom.Document; import org.w3c.dom.Document;
import org.w3c.dom.Node; import org.w3c.dom.Node;
@@ -45,6 +46,10 @@ import org.l2jmobius.gameserver.model.Location;
import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.announce.EventAnnouncement; import org.l2jmobius.gameserver.model.announce.EventAnnouncement;
import org.l2jmobius.gameserver.model.events.Containers;
import org.l2jmobius.gameserver.model.events.EventType;
import org.l2jmobius.gameserver.model.events.impl.OnServerStart;
import org.l2jmobius.gameserver.model.events.listeners.ConsumerEventListener;
import org.l2jmobius.gameserver.model.holders.EventDropHolder; import org.l2jmobius.gameserver.model.holders.EventDropHolder;
import org.l2jmobius.gameserver.script.DateRange; import org.l2jmobius.gameserver.script.DateRange;
import org.l2jmobius.gameserver.util.Broadcast; import org.l2jmobius.gameserver.util.Broadcast;
@@ -66,13 +71,13 @@ public class LongTimeEvent extends Quest
protected String _endMsg = ""; protected String _endMsg = "";
protected int _enterAnnounceId = -1; protected int _enterAnnounceId = -1;
// NPCs to spawm and their spawn points // NPCs to spawn and their spawn points
protected final List<NpcSpawn> _spawnList = new ArrayList<>(); protected final List<NpcSpawn> _spawnList = new ArrayList<>();
// Drop data for event // Drop data for event
protected final List<EventDropHolder> _dropList = new ArrayList<>(); protected final List<EventDropHolder> _dropList = new ArrayList<>();
// Items to destroy when event ends. // Items to destroy when event ends
protected final List<Integer> _destroyItemsOnEnd = new ArrayList<>(); protected final List<Integer> _destroyItemsOnEnd = new ArrayList<>();
protected class NpcSpawn protected class NpcSpawn
@@ -333,11 +338,10 @@ public class LongTimeEvent extends Quest
// Add event drops. // Add event drops.
EventDropManager.getInstance().addDrops(this, _dropList); EventDropManager.getInstance().addDrops(this, _dropList);
// Add spawns. // Add spawns on server start.
final Long millisToEventEnd = _eventPeriod.getEndDate().getTime() - System.currentTimeMillis(); if (!_spawnList.isEmpty())
for (NpcSpawn spawn : _spawnList)
{ {
addSpawn(spawn.npcId, spawn.loc.getX(), spawn.loc.getY(), spawn.loc.getZ(), spawn.loc.getHeading(), false, millisToEventEnd, false); Containers.Global().addListener(new ConsumerEventListener(Containers.Global(), EventType.ON_SERVER_START, _spawnNpcs, this));
} }
// Enable town shrines. // Enable town shrines.
@@ -359,9 +363,24 @@ public class LongTimeEvent extends Quest
} }
// Schedule event end. // Schedule event end.
final Long millisToEventEnd = _eventPeriod.getEndDate().getTime() - System.currentTimeMillis();
ThreadPool.schedule(new ScheduleEnd(), millisToEventEnd); ThreadPool.schedule(new ScheduleEnd(), millisToEventEnd);
} }
/**
* Event spawns must initialize after server loads scripts.
*/
private final Consumer<OnServerStart> _spawnNpcs = event ->
{
final Long millisToEventEnd = _eventPeriod.getEndDate().getTime() - System.currentTimeMillis();
for (NpcSpawn spawn : _spawnList)
{
addSpawn(spawn.npcId, spawn.loc.getX(), spawn.loc.getY(), spawn.loc.getZ(), spawn.loc.getHeading(), false, millisToEventEnd, false);
}
Containers.Global().removeListenerIf(EventType.ON_SERVER_START, listener -> listener.getOwner() == this);
};
protected class ScheduleEnd implements Runnable protected class ScheduleEnd implements Runnable
{ {
@Override @Override

View File

@@ -28,6 +28,7 @@ import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Locale; import java.util.Locale;
import java.util.Set; import java.util.Set;
import java.util.function.Consumer;
import java.util.logging.Level; import java.util.logging.Level;
import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilder;
@@ -46,6 +47,10 @@ import org.l2jmobius.gameserver.model.Location;
import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.announce.EventAnnouncement; import org.l2jmobius.gameserver.model.announce.EventAnnouncement;
import org.l2jmobius.gameserver.model.events.Containers;
import org.l2jmobius.gameserver.model.events.EventType;
import org.l2jmobius.gameserver.model.events.impl.OnServerStart;
import org.l2jmobius.gameserver.model.events.listeners.ConsumerEventListener;
import org.l2jmobius.gameserver.model.holders.EventDropHolder; import org.l2jmobius.gameserver.model.holders.EventDropHolder;
import org.l2jmobius.gameserver.script.DateRange; import org.l2jmobius.gameserver.script.DateRange;
import org.l2jmobius.gameserver.util.Broadcast; import org.l2jmobius.gameserver.util.Broadcast;
@@ -66,13 +71,13 @@ public class LongTimeEvent extends Quest
protected String _endMsg = ""; protected String _endMsg = "";
protected int _enterAnnounceId = -1; protected int _enterAnnounceId = -1;
// NPCs to spawm and their spawn points // NPCs to spawn and their spawn points
protected final List<NpcSpawn> _spawnList = new ArrayList<>(); protected final List<NpcSpawn> _spawnList = new ArrayList<>();
// Drop data for event // Drop data for event
protected final List<EventDropHolder> _dropList = new ArrayList<>(); protected final List<EventDropHolder> _dropList = new ArrayList<>();
// Items to destroy when event ends. // Items to destroy when event ends
protected final List<Integer> _destroyItemsOnEnd = new ArrayList<>(); protected final List<Integer> _destroyItemsOnEnd = new ArrayList<>();
protected class NpcSpawn protected class NpcSpawn
@@ -319,11 +324,10 @@ public class LongTimeEvent extends Quest
// Add event drops. // Add event drops.
EventDropManager.getInstance().addDrops(this, _dropList); EventDropManager.getInstance().addDrops(this, _dropList);
// Add spawns. // Add spawns on server start.
final Long millisToEventEnd = _eventPeriod.getEndDate().getTime() - System.currentTimeMillis(); if (!_spawnList.isEmpty())
for (NpcSpawn spawn : _spawnList)
{ {
addSpawn(spawn.npcId, spawn.loc.getX(), spawn.loc.getY(), spawn.loc.getZ(), spawn.loc.getHeading(), false, millisToEventEnd, false); Containers.Global().addListener(new ConsumerEventListener(Containers.Global(), EventType.ON_SERVER_START, _spawnNpcs, this));
} }
// Event enter announcement. // Event enter announcement.
@@ -339,9 +343,24 @@ public class LongTimeEvent extends Quest
} }
// Schedule event end. // Schedule event end.
final Long millisToEventEnd = _eventPeriod.getEndDate().getTime() - System.currentTimeMillis();
ThreadPool.schedule(new ScheduleEnd(), millisToEventEnd); ThreadPool.schedule(new ScheduleEnd(), millisToEventEnd);
} }
/**
* Event spawns must initialize after server loads scripts.
*/
private final Consumer<OnServerStart> _spawnNpcs = event ->
{
final Long millisToEventEnd = _eventPeriod.getEndDate().getTime() - System.currentTimeMillis();
for (NpcSpawn spawn : _spawnList)
{
addSpawn(spawn.npcId, spawn.loc.getX(), spawn.loc.getY(), spawn.loc.getZ(), spawn.loc.getHeading(), false, millisToEventEnd, false);
}
Containers.Global().removeListenerIf(EventType.ON_SERVER_START, listener -> listener.getOwner() == this);
};
protected class ScheduleEnd implements Runnable protected class ScheduleEnd implements Runnable
{ {
@Override @Override

View File

@@ -28,6 +28,7 @@ import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Locale; import java.util.Locale;
import java.util.Set; import java.util.Set;
import java.util.function.Consumer;
import java.util.logging.Level; import java.util.logging.Level;
import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilder;
@@ -46,6 +47,10 @@ import org.l2jmobius.gameserver.model.Location;
import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.announce.EventAnnouncement; import org.l2jmobius.gameserver.model.announce.EventAnnouncement;
import org.l2jmobius.gameserver.model.events.Containers;
import org.l2jmobius.gameserver.model.events.EventType;
import org.l2jmobius.gameserver.model.events.impl.OnServerStart;
import org.l2jmobius.gameserver.model.events.listeners.ConsumerEventListener;
import org.l2jmobius.gameserver.model.holders.EventDropHolder; import org.l2jmobius.gameserver.model.holders.EventDropHolder;
import org.l2jmobius.gameserver.script.DateRange; import org.l2jmobius.gameserver.script.DateRange;
import org.l2jmobius.gameserver.util.Broadcast; import org.l2jmobius.gameserver.util.Broadcast;
@@ -66,13 +71,13 @@ public class LongTimeEvent extends Quest
protected String _endMsg = ""; protected String _endMsg = "";
protected int _enterAnnounceId = -1; protected int _enterAnnounceId = -1;
// NPCs to spawm and their spawn points // NPCs to spawn and their spawn points
protected final List<NpcSpawn> _spawnList = new ArrayList<>(); protected final List<NpcSpawn> _spawnList = new ArrayList<>();
// Drop data for event // Drop data for event
protected final List<EventDropHolder> _dropList = new ArrayList<>(); protected final List<EventDropHolder> _dropList = new ArrayList<>();
// Items to destroy when event ends. // Items to destroy when event ends
protected final List<Integer> _destroyItemsOnEnd = new ArrayList<>(); protected final List<Integer> _destroyItemsOnEnd = new ArrayList<>();
protected class NpcSpawn protected class NpcSpawn
@@ -319,11 +324,10 @@ public class LongTimeEvent extends Quest
// Add event drops. // Add event drops.
EventDropManager.getInstance().addDrops(this, _dropList); EventDropManager.getInstance().addDrops(this, _dropList);
// Add spawns. // Add spawns on server start.
final Long millisToEventEnd = _eventPeriod.getEndDate().getTime() - System.currentTimeMillis(); if (!_spawnList.isEmpty())
for (NpcSpawn spawn : _spawnList)
{ {
addSpawn(spawn.npcId, spawn.loc.getX(), spawn.loc.getY(), spawn.loc.getZ(), spawn.loc.getHeading(), false, millisToEventEnd, false); Containers.Global().addListener(new ConsumerEventListener(Containers.Global(), EventType.ON_SERVER_START, _spawnNpcs, this));
} }
// Event enter announcement. // Event enter announcement.
@@ -339,9 +343,24 @@ public class LongTimeEvent extends Quest
} }
// Schedule event end. // Schedule event end.
final Long millisToEventEnd = _eventPeriod.getEndDate().getTime() - System.currentTimeMillis();
ThreadPool.schedule(new ScheduleEnd(), millisToEventEnd); ThreadPool.schedule(new ScheduleEnd(), millisToEventEnd);
} }
/**
* Event spawns must initialize after server loads scripts.
*/
private final Consumer<OnServerStart> _spawnNpcs = event ->
{
final Long millisToEventEnd = _eventPeriod.getEndDate().getTime() - System.currentTimeMillis();
for (NpcSpawn spawn : _spawnList)
{
addSpawn(spawn.npcId, spawn.loc.getX(), spawn.loc.getY(), spawn.loc.getZ(), spawn.loc.getHeading(), false, millisToEventEnd, false);
}
Containers.Global().removeListenerIf(EventType.ON_SERVER_START, listener -> listener.getOwner() == this);
};
protected class ScheduleEnd implements Runnable protected class ScheduleEnd implements Runnable
{ {
@Override @Override

View File

@@ -28,6 +28,7 @@ import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Locale; import java.util.Locale;
import java.util.Set; import java.util.Set;
import java.util.function.Consumer;
import java.util.logging.Level; import java.util.logging.Level;
import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilder;
@@ -46,6 +47,10 @@ import org.l2jmobius.gameserver.model.Location;
import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.announce.EventAnnouncement; import org.l2jmobius.gameserver.model.announce.EventAnnouncement;
import org.l2jmobius.gameserver.model.events.Containers;
import org.l2jmobius.gameserver.model.events.EventType;
import org.l2jmobius.gameserver.model.events.impl.OnServerStart;
import org.l2jmobius.gameserver.model.events.listeners.ConsumerEventListener;
import org.l2jmobius.gameserver.model.holders.EventDropHolder; import org.l2jmobius.gameserver.model.holders.EventDropHolder;
import org.l2jmobius.gameserver.script.DateRange; import org.l2jmobius.gameserver.script.DateRange;
import org.l2jmobius.gameserver.util.Broadcast; import org.l2jmobius.gameserver.util.Broadcast;
@@ -66,13 +71,13 @@ public class LongTimeEvent extends Quest
protected String _endMsg = ""; protected String _endMsg = "";
protected int _enterAnnounceId = -1; protected int _enterAnnounceId = -1;
// NPCs to spawm and their spawn points // NPCs to spawn and their spawn points
protected final List<NpcSpawn> _spawnList = new ArrayList<>(); protected final List<NpcSpawn> _spawnList = new ArrayList<>();
// Drop data for event // Drop data for event
protected final List<EventDropHolder> _dropList = new ArrayList<>(); protected final List<EventDropHolder> _dropList = new ArrayList<>();
// Items to destroy when event ends. // Items to destroy when event ends
protected final List<Integer> _destroyItemsOnEnd = new ArrayList<>(); protected final List<Integer> _destroyItemsOnEnd = new ArrayList<>();
protected class NpcSpawn protected class NpcSpawn
@@ -319,11 +324,10 @@ public class LongTimeEvent extends Quest
// Add event drops. // Add event drops.
EventDropManager.getInstance().addDrops(this, _dropList); EventDropManager.getInstance().addDrops(this, _dropList);
// Add spawns. // Add spawns on server start.
final Long millisToEventEnd = _eventPeriod.getEndDate().getTime() - System.currentTimeMillis(); if (!_spawnList.isEmpty())
for (NpcSpawn spawn : _spawnList)
{ {
addSpawn(spawn.npcId, spawn.loc.getX(), spawn.loc.getY(), spawn.loc.getZ(), spawn.loc.getHeading(), false, millisToEventEnd, false); Containers.Global().addListener(new ConsumerEventListener(Containers.Global(), EventType.ON_SERVER_START, _spawnNpcs, this));
} }
// Event enter announcement. // Event enter announcement.
@@ -339,9 +343,24 @@ public class LongTimeEvent extends Quest
} }
// Schedule event end. // Schedule event end.
final Long millisToEventEnd = _eventPeriod.getEndDate().getTime() - System.currentTimeMillis();
ThreadPool.schedule(new ScheduleEnd(), millisToEventEnd); ThreadPool.schedule(new ScheduleEnd(), millisToEventEnd);
} }
/**
* Event spawns must initialize after server loads scripts.
*/
private final Consumer<OnServerStart> _spawnNpcs = event ->
{
final Long millisToEventEnd = _eventPeriod.getEndDate().getTime() - System.currentTimeMillis();
for (NpcSpawn spawn : _spawnList)
{
addSpawn(spawn.npcId, spawn.loc.getX(), spawn.loc.getY(), spawn.loc.getZ(), spawn.loc.getHeading(), false, millisToEventEnd, false);
}
Containers.Global().removeListenerIf(EventType.ON_SERVER_START, listener -> listener.getOwner() == this);
};
protected class ScheduleEnd implements Runnable protected class ScheduleEnd implements Runnable
{ {
@Override @Override

View File

@@ -28,6 +28,7 @@ import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Locale; import java.util.Locale;
import java.util.Set; import java.util.Set;
import java.util.function.Consumer;
import org.w3c.dom.Document; import org.w3c.dom.Document;
import org.w3c.dom.Node; import org.w3c.dom.Node;
@@ -44,6 +45,10 @@ import org.l2jmobius.gameserver.model.Location;
import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.announce.EventAnnouncement; import org.l2jmobius.gameserver.model.announce.EventAnnouncement;
import org.l2jmobius.gameserver.model.events.Containers;
import org.l2jmobius.gameserver.model.events.EventType;
import org.l2jmobius.gameserver.model.events.impl.OnServerStart;
import org.l2jmobius.gameserver.model.events.listeners.ConsumerEventListener;
import org.l2jmobius.gameserver.model.holders.EventDropHolder; import org.l2jmobius.gameserver.model.holders.EventDropHolder;
import org.l2jmobius.gameserver.script.DateRange; import org.l2jmobius.gameserver.script.DateRange;
import org.l2jmobius.gameserver.util.Broadcast; import org.l2jmobius.gameserver.util.Broadcast;
@@ -65,13 +70,13 @@ public class LongTimeEvent extends Quest
protected String _endMsg = ""; protected String _endMsg = "";
protected int _enterAnnounceId = -1; protected int _enterAnnounceId = -1;
// NPCs to spawm and their spawn points // NPCs to spawn and their spawn points
protected final List<NpcSpawn> _spawnList = new ArrayList<>(); protected final List<NpcSpawn> _spawnList = new ArrayList<>();
// Drop data for event // Drop data for event
protected final List<EventDropHolder> _dropList = new ArrayList<>(); protected final List<EventDropHolder> _dropList = new ArrayList<>();
// Items to destroy when event ends. // Items to destroy when event ends
protected final List<Integer> _destroyItemsOnEnd = new ArrayList<>(); protected final List<Integer> _destroyItemsOnEnd = new ArrayList<>();
protected class NpcSpawn protected class NpcSpawn
@@ -325,11 +330,10 @@ public class LongTimeEvent extends Quest
// Add event drops. // Add event drops.
EventDropManager.getInstance().addDrops(this, _dropList); EventDropManager.getInstance().addDrops(this, _dropList);
// Add spawns. // Add spawns on server start.
final Long millisToEventEnd = _eventPeriod.getEndDate().getTime() - System.currentTimeMillis(); if (!_spawnList.isEmpty())
for (NpcSpawn spawn : _spawnList)
{ {
addSpawn(spawn.npcId, spawn.loc.getX(), spawn.loc.getY(), spawn.loc.getZ(), spawn.loc.getHeading(), false, millisToEventEnd, false); Containers.Global().addListener(new ConsumerEventListener(Containers.Global(), EventType.ON_SERVER_START, _spawnNpcs, this));
} }
// Enable town shrines. // Enable town shrines.
@@ -351,9 +355,24 @@ public class LongTimeEvent extends Quest
} }
// Schedule event end. // Schedule event end.
final Long millisToEventEnd = _eventPeriod.getEndDate().getTime() - System.currentTimeMillis();
ThreadPool.schedule(new ScheduleEnd(), millisToEventEnd); ThreadPool.schedule(new ScheduleEnd(), millisToEventEnd);
} }
/**
* Event spawns must initialize after server loads scripts.
*/
private final Consumer<OnServerStart> _spawnNpcs = event ->
{
final Long millisToEventEnd = _eventPeriod.getEndDate().getTime() - System.currentTimeMillis();
for (NpcSpawn spawn : _spawnList)
{
addSpawn(spawn.npcId, spawn.loc.getX(), spawn.loc.getY(), spawn.loc.getZ(), spawn.loc.getHeading(), false, millisToEventEnd, false);
}
Containers.Global().removeListenerIf(EventType.ON_SERVER_START, listener -> listener.getOwner() == this);
};
protected class ScheduleEnd implements Runnable protected class ScheduleEnd implements Runnable
{ {
@Override @Override

View File

@@ -28,6 +28,7 @@ import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Locale; import java.util.Locale;
import java.util.Set; import java.util.Set;
import java.util.function.Consumer;
import org.w3c.dom.Document; import org.w3c.dom.Document;
import org.w3c.dom.Node; import org.w3c.dom.Node;
@@ -44,6 +45,10 @@ import org.l2jmobius.gameserver.model.Location;
import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.announce.EventAnnouncement; import org.l2jmobius.gameserver.model.announce.EventAnnouncement;
import org.l2jmobius.gameserver.model.events.Containers;
import org.l2jmobius.gameserver.model.events.EventType;
import org.l2jmobius.gameserver.model.events.impl.OnServerStart;
import org.l2jmobius.gameserver.model.events.listeners.ConsumerEventListener;
import org.l2jmobius.gameserver.model.holders.EventDropHolder; import org.l2jmobius.gameserver.model.holders.EventDropHolder;
import org.l2jmobius.gameserver.script.DateRange; import org.l2jmobius.gameserver.script.DateRange;
import org.l2jmobius.gameserver.util.Broadcast; import org.l2jmobius.gameserver.util.Broadcast;
@@ -65,13 +70,13 @@ public class LongTimeEvent extends Quest
protected String _endMsg = ""; protected String _endMsg = "";
protected int _enterAnnounceId = -1; protected int _enterAnnounceId = -1;
// NPCs to spawm and their spawn points // NPCs to spawn and their spawn points
protected final List<NpcSpawn> _spawnList = new ArrayList<>(); protected final List<NpcSpawn> _spawnList = new ArrayList<>();
// Drop data for event // Drop data for event
protected final List<EventDropHolder> _dropList = new ArrayList<>(); protected final List<EventDropHolder> _dropList = new ArrayList<>();
// Items to destroy when event ends. // Items to destroy when event ends
protected final List<Integer> _destroyItemsOnEnd = new ArrayList<>(); protected final List<Integer> _destroyItemsOnEnd = new ArrayList<>();
protected class NpcSpawn protected class NpcSpawn
@@ -325,11 +330,10 @@ public class LongTimeEvent extends Quest
// Add event drops. // Add event drops.
EventDropManager.getInstance().addDrops(this, _dropList); EventDropManager.getInstance().addDrops(this, _dropList);
// Add spawns. // Add spawns on server start.
final Long millisToEventEnd = _eventPeriod.getEndDate().getTime() - System.currentTimeMillis(); if (!_spawnList.isEmpty())
for (NpcSpawn spawn : _spawnList)
{ {
addSpawn(spawn.npcId, spawn.loc.getX(), spawn.loc.getY(), spawn.loc.getZ(), spawn.loc.getHeading(), false, millisToEventEnd, false); Containers.Global().addListener(new ConsumerEventListener(Containers.Global(), EventType.ON_SERVER_START, _spawnNpcs, this));
} }
// Enable town shrines. // Enable town shrines.
@@ -351,9 +355,24 @@ public class LongTimeEvent extends Quest
} }
// Schedule event end. // Schedule event end.
final Long millisToEventEnd = _eventPeriod.getEndDate().getTime() - System.currentTimeMillis();
ThreadPool.schedule(new ScheduleEnd(), millisToEventEnd); ThreadPool.schedule(new ScheduleEnd(), millisToEventEnd);
} }
/**
* Event spawns must initialize after server loads scripts.
*/
private final Consumer<OnServerStart> _spawnNpcs = event ->
{
final Long millisToEventEnd = _eventPeriod.getEndDate().getTime() - System.currentTimeMillis();
for (NpcSpawn spawn : _spawnList)
{
addSpawn(spawn.npcId, spawn.loc.getX(), spawn.loc.getY(), spawn.loc.getZ(), spawn.loc.getHeading(), false, millisToEventEnd, false);
}
Containers.Global().removeListenerIf(EventType.ON_SERVER_START, listener -> listener.getOwner() == this);
};
protected class ScheduleEnd implements Runnable protected class ScheduleEnd implements Runnable
{ {
@Override @Override

View File

@@ -28,6 +28,7 @@ import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Locale; import java.util.Locale;
import java.util.Set; import java.util.Set;
import java.util.function.Consumer;
import org.w3c.dom.Document; import org.w3c.dom.Document;
import org.w3c.dom.Node; import org.w3c.dom.Node;
@@ -44,6 +45,10 @@ import org.l2jmobius.gameserver.model.Location;
import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.announce.EventAnnouncement; import org.l2jmobius.gameserver.model.announce.EventAnnouncement;
import org.l2jmobius.gameserver.model.events.Containers;
import org.l2jmobius.gameserver.model.events.EventType;
import org.l2jmobius.gameserver.model.events.impl.OnServerStart;
import org.l2jmobius.gameserver.model.events.listeners.ConsumerEventListener;
import org.l2jmobius.gameserver.model.holders.EventDropHolder; import org.l2jmobius.gameserver.model.holders.EventDropHolder;
import org.l2jmobius.gameserver.script.DateRange; import org.l2jmobius.gameserver.script.DateRange;
import org.l2jmobius.gameserver.util.Broadcast; import org.l2jmobius.gameserver.util.Broadcast;
@@ -65,13 +70,13 @@ public class LongTimeEvent extends Quest
protected String _endMsg = ""; protected String _endMsg = "";
protected int _enterAnnounceId = -1; protected int _enterAnnounceId = -1;
// NPCs to spawm and their spawn points // NPCs to spawn and their spawn points
protected final List<NpcSpawn> _spawnList = new ArrayList<>(); protected final List<NpcSpawn> _spawnList = new ArrayList<>();
// Drop data for event // Drop data for event
protected final List<EventDropHolder> _dropList = new ArrayList<>(); protected final List<EventDropHolder> _dropList = new ArrayList<>();
// Items to destroy when event ends. // Items to destroy when event ends
protected final List<Integer> _destroyItemsOnEnd = new ArrayList<>(); protected final List<Integer> _destroyItemsOnEnd = new ArrayList<>();
protected class NpcSpawn protected class NpcSpawn
@@ -325,11 +330,10 @@ public class LongTimeEvent extends Quest
// Add event drops. // Add event drops.
EventDropManager.getInstance().addDrops(this, _dropList); EventDropManager.getInstance().addDrops(this, _dropList);
// Add spawns. // Add spawns on server start.
final Long millisToEventEnd = _eventPeriod.getEndDate().getTime() - System.currentTimeMillis(); if (!_spawnList.isEmpty())
for (NpcSpawn spawn : _spawnList)
{ {
addSpawn(spawn.npcId, spawn.loc.getX(), spawn.loc.getY(), spawn.loc.getZ(), spawn.loc.getHeading(), false, millisToEventEnd, false); Containers.Global().addListener(new ConsumerEventListener(Containers.Global(), EventType.ON_SERVER_START, _spawnNpcs, this));
} }
// Enable town shrines. // Enable town shrines.
@@ -351,9 +355,24 @@ public class LongTimeEvent extends Quest
} }
// Schedule event end. // Schedule event end.
final Long millisToEventEnd = _eventPeriod.getEndDate().getTime() - System.currentTimeMillis();
ThreadPool.schedule(new ScheduleEnd(), millisToEventEnd); ThreadPool.schedule(new ScheduleEnd(), millisToEventEnd);
} }
/**
* Event spawns must initialize after server loads scripts.
*/
private final Consumer<OnServerStart> _spawnNpcs = event ->
{
final Long millisToEventEnd = _eventPeriod.getEndDate().getTime() - System.currentTimeMillis();
for (NpcSpawn spawn : _spawnList)
{
addSpawn(spawn.npcId, spawn.loc.getX(), spawn.loc.getY(), spawn.loc.getZ(), spawn.loc.getHeading(), false, millisToEventEnd, false);
}
Containers.Global().removeListenerIf(EventType.ON_SERVER_START, listener -> listener.getOwner() == this);
};
protected class ScheduleEnd implements Runnable protected class ScheduleEnd implements Runnable
{ {
@Override @Override

View File

@@ -28,6 +28,7 @@ import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Locale; import java.util.Locale;
import java.util.Set; import java.util.Set;
import java.util.function.Consumer;
import org.w3c.dom.Document; import org.w3c.dom.Document;
import org.w3c.dom.Node; import org.w3c.dom.Node;
@@ -44,6 +45,10 @@ import org.l2jmobius.gameserver.model.Location;
import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.announce.EventAnnouncement; import org.l2jmobius.gameserver.model.announce.EventAnnouncement;
import org.l2jmobius.gameserver.model.events.Containers;
import org.l2jmobius.gameserver.model.events.EventType;
import org.l2jmobius.gameserver.model.events.impl.OnServerStart;
import org.l2jmobius.gameserver.model.events.listeners.ConsumerEventListener;
import org.l2jmobius.gameserver.model.holders.EventDropHolder; import org.l2jmobius.gameserver.model.holders.EventDropHolder;
import org.l2jmobius.gameserver.script.DateRange; import org.l2jmobius.gameserver.script.DateRange;
import org.l2jmobius.gameserver.util.Broadcast; import org.l2jmobius.gameserver.util.Broadcast;
@@ -65,13 +70,13 @@ public class LongTimeEvent extends Quest
protected String _endMsg = ""; protected String _endMsg = "";
protected int _enterAnnounceId = -1; protected int _enterAnnounceId = -1;
// NPCs to spawm and their spawn points // NPCs to spawn and their spawn points
protected final List<NpcSpawn> _spawnList = new ArrayList<>(); protected final List<NpcSpawn> _spawnList = new ArrayList<>();
// Drop data for event // Drop data for event
protected final List<EventDropHolder> _dropList = new ArrayList<>(); protected final List<EventDropHolder> _dropList = new ArrayList<>();
// Items to destroy when event ends. // Items to destroy when event ends
protected final List<Integer> _destroyItemsOnEnd = new ArrayList<>(); protected final List<Integer> _destroyItemsOnEnd = new ArrayList<>();
protected class NpcSpawn protected class NpcSpawn
@@ -325,11 +330,10 @@ public class LongTimeEvent extends Quest
// Add event drops. // Add event drops.
EventDropManager.getInstance().addDrops(this, _dropList); EventDropManager.getInstance().addDrops(this, _dropList);
// Add spawns. // Add spawns on server start.
final Long millisToEventEnd = _eventPeriod.getEndDate().getTime() - System.currentTimeMillis(); if (!_spawnList.isEmpty())
for (NpcSpawn spawn : _spawnList)
{ {
addSpawn(spawn.npcId, spawn.loc.getX(), spawn.loc.getY(), spawn.loc.getZ(), spawn.loc.getHeading(), false, millisToEventEnd, false); Containers.Global().addListener(new ConsumerEventListener(Containers.Global(), EventType.ON_SERVER_START, _spawnNpcs, this));
} }
// Enable town shrines. // Enable town shrines.
@@ -351,9 +355,24 @@ public class LongTimeEvent extends Quest
} }
// Schedule event end. // Schedule event end.
final Long millisToEventEnd = _eventPeriod.getEndDate().getTime() - System.currentTimeMillis();
ThreadPool.schedule(new ScheduleEnd(), millisToEventEnd); ThreadPool.schedule(new ScheduleEnd(), millisToEventEnd);
} }
/**
* Event spawns must initialize after server loads scripts.
*/
private final Consumer<OnServerStart> _spawnNpcs = event ->
{
final Long millisToEventEnd = _eventPeriod.getEndDate().getTime() - System.currentTimeMillis();
for (NpcSpawn spawn : _spawnList)
{
addSpawn(spawn.npcId, spawn.loc.getX(), spawn.loc.getY(), spawn.loc.getZ(), spawn.loc.getHeading(), false, millisToEventEnd, false);
}
Containers.Global().removeListenerIf(EventType.ON_SERVER_START, listener -> listener.getOwner() == this);
};
protected class ScheduleEnd implements Runnable protected class ScheduleEnd implements Runnable
{ {
@Override @Override

View File

@@ -28,6 +28,7 @@ import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Locale; import java.util.Locale;
import java.util.Set; import java.util.Set;
import java.util.function.Consumer;
import org.w3c.dom.Document; import org.w3c.dom.Document;
import org.w3c.dom.Node; import org.w3c.dom.Node;
@@ -44,6 +45,10 @@ import org.l2jmobius.gameserver.model.Location;
import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.announce.EventAnnouncement; import org.l2jmobius.gameserver.model.announce.EventAnnouncement;
import org.l2jmobius.gameserver.model.events.Containers;
import org.l2jmobius.gameserver.model.events.EventType;
import org.l2jmobius.gameserver.model.events.impl.OnServerStart;
import org.l2jmobius.gameserver.model.events.listeners.ConsumerEventListener;
import org.l2jmobius.gameserver.model.holders.EventDropHolder; import org.l2jmobius.gameserver.model.holders.EventDropHolder;
import org.l2jmobius.gameserver.script.DateRange; import org.l2jmobius.gameserver.script.DateRange;
import org.l2jmobius.gameserver.util.Broadcast; import org.l2jmobius.gameserver.util.Broadcast;
@@ -65,13 +70,13 @@ public class LongTimeEvent extends Quest
protected String _endMsg = ""; protected String _endMsg = "";
protected int _enterAnnounceId = -1; protected int _enterAnnounceId = -1;
// NPCs to spawm and their spawn points // NPCs to spawn and their spawn points
protected final List<NpcSpawn> _spawnList = new ArrayList<>(); protected final List<NpcSpawn> _spawnList = new ArrayList<>();
// Drop data for event // Drop data for event
protected final List<EventDropHolder> _dropList = new ArrayList<>(); protected final List<EventDropHolder> _dropList = new ArrayList<>();
// Items to destroy when event ends. // Items to destroy when event ends
protected final List<Integer> _destroyItemsOnEnd = new ArrayList<>(); protected final List<Integer> _destroyItemsOnEnd = new ArrayList<>();
protected class NpcSpawn protected class NpcSpawn
@@ -325,11 +330,10 @@ public class LongTimeEvent extends Quest
// Add event drops. // Add event drops.
EventDropManager.getInstance().addDrops(this, _dropList); EventDropManager.getInstance().addDrops(this, _dropList);
// Add spawns. // Add spawns on server start.
final Long millisToEventEnd = _eventPeriod.getEndDate().getTime() - System.currentTimeMillis(); if (!_spawnList.isEmpty())
for (NpcSpawn spawn : _spawnList)
{ {
addSpawn(spawn.npcId, spawn.loc.getX(), spawn.loc.getY(), spawn.loc.getZ(), spawn.loc.getHeading(), false, millisToEventEnd, false); Containers.Global().addListener(new ConsumerEventListener(Containers.Global(), EventType.ON_SERVER_START, _spawnNpcs, this));
} }
// Enable town shrines. // Enable town shrines.
@@ -351,9 +355,24 @@ public class LongTimeEvent extends Quest
} }
// Schedule event end. // Schedule event end.
final Long millisToEventEnd = _eventPeriod.getEndDate().getTime() - System.currentTimeMillis();
ThreadPool.schedule(new ScheduleEnd(), millisToEventEnd); ThreadPool.schedule(new ScheduleEnd(), millisToEventEnd);
} }
/**
* Event spawns must initialize after server loads scripts.
*/
private final Consumer<OnServerStart> _spawnNpcs = event ->
{
final Long millisToEventEnd = _eventPeriod.getEndDate().getTime() - System.currentTimeMillis();
for (NpcSpawn spawn : _spawnList)
{
addSpawn(spawn.npcId, spawn.loc.getX(), spawn.loc.getY(), spawn.loc.getZ(), spawn.loc.getHeading(), false, millisToEventEnd, false);
}
Containers.Global().removeListenerIf(EventType.ON_SERVER_START, listener -> listener.getOwner() == this);
};
protected class ScheduleEnd implements Runnable protected class ScheduleEnd implements Runnable
{ {
@Override @Override

View File

@@ -28,6 +28,7 @@ import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Locale; import java.util.Locale;
import java.util.Set; import java.util.Set;
import java.util.function.Consumer;
import org.w3c.dom.Document; import org.w3c.dom.Document;
import org.w3c.dom.Node; import org.w3c.dom.Node;
@@ -44,6 +45,10 @@ import org.l2jmobius.gameserver.model.Location;
import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.announce.EventAnnouncement; import org.l2jmobius.gameserver.model.announce.EventAnnouncement;
import org.l2jmobius.gameserver.model.events.Containers;
import org.l2jmobius.gameserver.model.events.EventType;
import org.l2jmobius.gameserver.model.events.impl.OnServerStart;
import org.l2jmobius.gameserver.model.events.listeners.ConsumerEventListener;
import org.l2jmobius.gameserver.model.holders.EventDropHolder; import org.l2jmobius.gameserver.model.holders.EventDropHolder;
import org.l2jmobius.gameserver.script.DateRange; import org.l2jmobius.gameserver.script.DateRange;
import org.l2jmobius.gameserver.util.Broadcast; import org.l2jmobius.gameserver.util.Broadcast;
@@ -65,13 +70,13 @@ public class LongTimeEvent extends Quest
protected String _endMsg = ""; protected String _endMsg = "";
protected int _enterAnnounceId = -1; protected int _enterAnnounceId = -1;
// NPCs to spawm and their spawn points // NPCs to spawn and their spawn points
protected final List<NpcSpawn> _spawnList = new ArrayList<>(); protected final List<NpcSpawn> _spawnList = new ArrayList<>();
// Drop data for event // Drop data for event
protected final List<EventDropHolder> _dropList = new ArrayList<>(); protected final List<EventDropHolder> _dropList = new ArrayList<>();
// Items to destroy when event ends. // Items to destroy when event ends
protected final List<Integer> _destroyItemsOnEnd = new ArrayList<>(); protected final List<Integer> _destroyItemsOnEnd = new ArrayList<>();
protected class NpcSpawn protected class NpcSpawn
@@ -325,11 +330,10 @@ public class LongTimeEvent extends Quest
// Add event drops. // Add event drops.
EventDropManager.getInstance().addDrops(this, _dropList); EventDropManager.getInstance().addDrops(this, _dropList);
// Add spawns. // Add spawns on server start.
final Long millisToEventEnd = _eventPeriod.getEndDate().getTime() - System.currentTimeMillis(); if (!_spawnList.isEmpty())
for (NpcSpawn spawn : _spawnList)
{ {
addSpawn(spawn.npcId, spawn.loc.getX(), spawn.loc.getY(), spawn.loc.getZ(), spawn.loc.getHeading(), false, millisToEventEnd, false); Containers.Global().addListener(new ConsumerEventListener(Containers.Global(), EventType.ON_SERVER_START, _spawnNpcs, this));
} }
// Enable town shrines. // Enable town shrines.
@@ -351,9 +355,24 @@ public class LongTimeEvent extends Quest
} }
// Schedule event end. // Schedule event end.
final Long millisToEventEnd = _eventPeriod.getEndDate().getTime() - System.currentTimeMillis();
ThreadPool.schedule(new ScheduleEnd(), millisToEventEnd); ThreadPool.schedule(new ScheduleEnd(), millisToEventEnd);
} }
/**
* Event spawns must initialize after server loads scripts.
*/
private final Consumer<OnServerStart> _spawnNpcs = event ->
{
final Long millisToEventEnd = _eventPeriod.getEndDate().getTime() - System.currentTimeMillis();
for (NpcSpawn spawn : _spawnList)
{
addSpawn(spawn.npcId, spawn.loc.getX(), spawn.loc.getY(), spawn.loc.getZ(), spawn.loc.getHeading(), false, millisToEventEnd, false);
}
Containers.Global().removeListenerIf(EventType.ON_SERVER_START, listener -> listener.getOwner() == this);
};
protected class ScheduleEnd implements Runnable protected class ScheduleEnd implements Runnable
{ {
@Override @Override

View File

@@ -28,6 +28,7 @@ import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Locale; import java.util.Locale;
import java.util.Set; import java.util.Set;
import java.util.function.Consumer;
import org.w3c.dom.Document; import org.w3c.dom.Document;
import org.w3c.dom.Node; import org.w3c.dom.Node;
@@ -44,6 +45,10 @@ import org.l2jmobius.gameserver.model.Location;
import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.announce.EventAnnouncement; import org.l2jmobius.gameserver.model.announce.EventAnnouncement;
import org.l2jmobius.gameserver.model.events.Containers;
import org.l2jmobius.gameserver.model.events.EventType;
import org.l2jmobius.gameserver.model.events.impl.OnServerStart;
import org.l2jmobius.gameserver.model.events.listeners.ConsumerEventListener;
import org.l2jmobius.gameserver.model.holders.EventDropHolder; import org.l2jmobius.gameserver.model.holders.EventDropHolder;
import org.l2jmobius.gameserver.script.DateRange; import org.l2jmobius.gameserver.script.DateRange;
import org.l2jmobius.gameserver.util.Broadcast; import org.l2jmobius.gameserver.util.Broadcast;
@@ -65,13 +70,13 @@ public class LongTimeEvent extends Quest
protected String _endMsg = ""; protected String _endMsg = "";
protected int _enterAnnounceId = -1; protected int _enterAnnounceId = -1;
// NPCs to spawm and their spawn points // NPCs to spawn and their spawn points
protected final List<NpcSpawn> _spawnList = new ArrayList<>(); protected final List<NpcSpawn> _spawnList = new ArrayList<>();
// Drop data for event // Drop data for event
protected final List<EventDropHolder> _dropList = new ArrayList<>(); protected final List<EventDropHolder> _dropList = new ArrayList<>();
// Items to destroy when event ends. // Items to destroy when event ends
protected final List<Integer> _destroyItemsOnEnd = new ArrayList<>(); protected final List<Integer> _destroyItemsOnEnd = new ArrayList<>();
protected class NpcSpawn protected class NpcSpawn
@@ -325,11 +330,10 @@ public class LongTimeEvent extends Quest
// Add event drops. // Add event drops.
EventDropManager.getInstance().addDrops(this, _dropList); EventDropManager.getInstance().addDrops(this, _dropList);
// Add spawns. // Add spawns on server start.
final Long millisToEventEnd = _eventPeriod.getEndDate().getTime() - System.currentTimeMillis(); if (!_spawnList.isEmpty())
for (NpcSpawn spawn : _spawnList)
{ {
addSpawn(spawn.npcId, spawn.loc.getX(), spawn.loc.getY(), spawn.loc.getZ(), spawn.loc.getHeading(), false, millisToEventEnd, false); Containers.Global().addListener(new ConsumerEventListener(Containers.Global(), EventType.ON_SERVER_START, _spawnNpcs, this));
} }
// Enable town shrines. // Enable town shrines.
@@ -351,9 +355,24 @@ public class LongTimeEvent extends Quest
} }
// Schedule event end. // Schedule event end.
final Long millisToEventEnd = _eventPeriod.getEndDate().getTime() - System.currentTimeMillis();
ThreadPool.schedule(new ScheduleEnd(), millisToEventEnd); ThreadPool.schedule(new ScheduleEnd(), millisToEventEnd);
} }
/**
* Event spawns must initialize after server loads scripts.
*/
private final Consumer<OnServerStart> _spawnNpcs = event ->
{
final Long millisToEventEnd = _eventPeriod.getEndDate().getTime() - System.currentTimeMillis();
for (NpcSpawn spawn : _spawnList)
{
addSpawn(spawn.npcId, spawn.loc.getX(), spawn.loc.getY(), spawn.loc.getZ(), spawn.loc.getHeading(), false, millisToEventEnd, false);
}
Containers.Global().removeListenerIf(EventType.ON_SERVER_START, listener -> listener.getOwner() == this);
};
protected class ScheduleEnd implements Runnable protected class ScheduleEnd implements Runnable
{ {
@Override @Override

View File

@@ -28,6 +28,7 @@ import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Locale; import java.util.Locale;
import java.util.Set; import java.util.Set;
import java.util.function.Consumer;
import org.w3c.dom.Document; import org.w3c.dom.Document;
import org.w3c.dom.Node; import org.w3c.dom.Node;
@@ -44,6 +45,10 @@ import org.l2jmobius.gameserver.model.Location;
import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.announce.EventAnnouncement; import org.l2jmobius.gameserver.model.announce.EventAnnouncement;
import org.l2jmobius.gameserver.model.events.Containers;
import org.l2jmobius.gameserver.model.events.EventType;
import org.l2jmobius.gameserver.model.events.impl.OnServerStart;
import org.l2jmobius.gameserver.model.events.listeners.ConsumerEventListener;
import org.l2jmobius.gameserver.model.holders.EventDropHolder; import org.l2jmobius.gameserver.model.holders.EventDropHolder;
import org.l2jmobius.gameserver.script.DateRange; import org.l2jmobius.gameserver.script.DateRange;
import org.l2jmobius.gameserver.util.Broadcast; import org.l2jmobius.gameserver.util.Broadcast;
@@ -65,13 +70,13 @@ public class LongTimeEvent extends Quest
protected String _endMsg = ""; protected String _endMsg = "";
protected int _enterAnnounceId = -1; protected int _enterAnnounceId = -1;
// NPCs to spawm and their spawn points // NPCs to spawn and their spawn points
protected final List<NpcSpawn> _spawnList = new ArrayList<>(); protected final List<NpcSpawn> _spawnList = new ArrayList<>();
// Drop data for event // Drop data for event
protected final List<EventDropHolder> _dropList = new ArrayList<>(); protected final List<EventDropHolder> _dropList = new ArrayList<>();
// Items to destroy when event ends. // Items to destroy when event ends
protected final List<Integer> _destroyItemsOnEnd = new ArrayList<>(); protected final List<Integer> _destroyItemsOnEnd = new ArrayList<>();
protected class NpcSpawn protected class NpcSpawn
@@ -325,11 +330,10 @@ public class LongTimeEvent extends Quest
// Add event drops. // Add event drops.
EventDropManager.getInstance().addDrops(this, _dropList); EventDropManager.getInstance().addDrops(this, _dropList);
// Add spawns. // Add spawns on server start.
final Long millisToEventEnd = _eventPeriod.getEndDate().getTime() - System.currentTimeMillis(); if (!_spawnList.isEmpty())
for (NpcSpawn spawn : _spawnList)
{ {
addSpawn(spawn.npcId, spawn.loc.getX(), spawn.loc.getY(), spawn.loc.getZ(), spawn.loc.getHeading(), false, millisToEventEnd, false); Containers.Global().addListener(new ConsumerEventListener(Containers.Global(), EventType.ON_SERVER_START, _spawnNpcs, this));
} }
// Enable town shrines. // Enable town shrines.
@@ -351,9 +355,24 @@ public class LongTimeEvent extends Quest
} }
// Schedule event end. // Schedule event end.
final Long millisToEventEnd = _eventPeriod.getEndDate().getTime() - System.currentTimeMillis();
ThreadPool.schedule(new ScheduleEnd(), millisToEventEnd); ThreadPool.schedule(new ScheduleEnd(), millisToEventEnd);
} }
/**
* Event spawns must initialize after server loads scripts.
*/
private final Consumer<OnServerStart> _spawnNpcs = event ->
{
final Long millisToEventEnd = _eventPeriod.getEndDate().getTime() - System.currentTimeMillis();
for (NpcSpawn spawn : _spawnList)
{
addSpawn(spawn.npcId, spawn.loc.getX(), spawn.loc.getY(), spawn.loc.getZ(), spawn.loc.getHeading(), false, millisToEventEnd, false);
}
Containers.Global().removeListenerIf(EventType.ON_SERVER_START, listener -> listener.getOwner() == this);
};
protected class ScheduleEnd implements Runnable protected class ScheduleEnd implements Runnable
{ {
@Override @Override

View File

@@ -28,6 +28,7 @@ import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Locale; import java.util.Locale;
import java.util.Set; import java.util.Set;
import java.util.function.Consumer;
import org.w3c.dom.Document; import org.w3c.dom.Document;
import org.w3c.dom.Node; import org.w3c.dom.Node;
@@ -44,6 +45,10 @@ import org.l2jmobius.gameserver.model.Location;
import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.announce.EventAnnouncement; import org.l2jmobius.gameserver.model.announce.EventAnnouncement;
import org.l2jmobius.gameserver.model.events.Containers;
import org.l2jmobius.gameserver.model.events.EventType;
import org.l2jmobius.gameserver.model.events.impl.OnServerStart;
import org.l2jmobius.gameserver.model.events.listeners.ConsumerEventListener;
import org.l2jmobius.gameserver.model.holders.EventDropHolder; import org.l2jmobius.gameserver.model.holders.EventDropHolder;
import org.l2jmobius.gameserver.script.DateRange; import org.l2jmobius.gameserver.script.DateRange;
import org.l2jmobius.gameserver.util.Broadcast; import org.l2jmobius.gameserver.util.Broadcast;
@@ -65,13 +70,13 @@ public class LongTimeEvent extends Quest
protected String _endMsg = ""; protected String _endMsg = "";
protected int _enterAnnounceId = -1; protected int _enterAnnounceId = -1;
// NPCs to spawm and their spawn points // NPCs to spawn and their spawn points
protected final List<NpcSpawn> _spawnList = new ArrayList<>(); protected final List<NpcSpawn> _spawnList = new ArrayList<>();
// Drop data for event // Drop data for event
protected final List<EventDropHolder> _dropList = new ArrayList<>(); protected final List<EventDropHolder> _dropList = new ArrayList<>();
// Items to destroy when event ends. // Items to destroy when event ends
protected final List<Integer> _destroyItemsOnEnd = new ArrayList<>(); protected final List<Integer> _destroyItemsOnEnd = new ArrayList<>();
protected class NpcSpawn protected class NpcSpawn
@@ -325,11 +330,10 @@ public class LongTimeEvent extends Quest
// Add event drops. // Add event drops.
EventDropManager.getInstance().addDrops(this, _dropList); EventDropManager.getInstance().addDrops(this, _dropList);
// Add spawns. // Add spawns on server start.
final Long millisToEventEnd = _eventPeriod.getEndDate().getTime() - System.currentTimeMillis(); if (!_spawnList.isEmpty())
for (NpcSpawn spawn : _spawnList)
{ {
addSpawn(spawn.npcId, spawn.loc.getX(), spawn.loc.getY(), spawn.loc.getZ(), spawn.loc.getHeading(), false, millisToEventEnd, false); Containers.Global().addListener(new ConsumerEventListener(Containers.Global(), EventType.ON_SERVER_START, _spawnNpcs, this));
} }
// Enable town shrines. // Enable town shrines.
@@ -351,9 +355,24 @@ public class LongTimeEvent extends Quest
} }
// Schedule event end. // Schedule event end.
final Long millisToEventEnd = _eventPeriod.getEndDate().getTime() - System.currentTimeMillis();
ThreadPool.schedule(new ScheduleEnd(), millisToEventEnd); ThreadPool.schedule(new ScheduleEnd(), millisToEventEnd);
} }
/**
* Event spawns must initialize after server loads scripts.
*/
private final Consumer<OnServerStart> _spawnNpcs = event ->
{
final Long millisToEventEnd = _eventPeriod.getEndDate().getTime() - System.currentTimeMillis();
for (NpcSpawn spawn : _spawnList)
{
addSpawn(spawn.npcId, spawn.loc.getX(), spawn.loc.getY(), spawn.loc.getZ(), spawn.loc.getHeading(), false, millisToEventEnd, false);
}
Containers.Global().removeListenerIf(EventType.ON_SERVER_START, listener -> listener.getOwner() == this);
};
protected class ScheduleEnd implements Runnable protected class ScheduleEnd implements Runnable
{ {
@Override @Override

View File

@@ -28,6 +28,7 @@ import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Locale; import java.util.Locale;
import java.util.Set; import java.util.Set;
import java.util.function.Consumer;
import org.w3c.dom.Document; import org.w3c.dom.Document;
import org.w3c.dom.Node; import org.w3c.dom.Node;
@@ -44,6 +45,10 @@ import org.l2jmobius.gameserver.model.Location;
import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.announce.EventAnnouncement; import org.l2jmobius.gameserver.model.announce.EventAnnouncement;
import org.l2jmobius.gameserver.model.events.Containers;
import org.l2jmobius.gameserver.model.events.EventType;
import org.l2jmobius.gameserver.model.events.impl.OnServerStart;
import org.l2jmobius.gameserver.model.events.listeners.ConsumerEventListener;
import org.l2jmobius.gameserver.model.holders.EventDropHolder; import org.l2jmobius.gameserver.model.holders.EventDropHolder;
import org.l2jmobius.gameserver.script.DateRange; import org.l2jmobius.gameserver.script.DateRange;
import org.l2jmobius.gameserver.util.Broadcast; import org.l2jmobius.gameserver.util.Broadcast;
@@ -65,13 +70,13 @@ public class LongTimeEvent extends Quest
protected String _endMsg = ""; protected String _endMsg = "";
protected int _enterAnnounceId = -1; protected int _enterAnnounceId = -1;
// NPCs to spawm and their spawn points // NPCs to spawn and their spawn points
protected final List<NpcSpawn> _spawnList = new ArrayList<>(); protected final List<NpcSpawn> _spawnList = new ArrayList<>();
// Drop data for event // Drop data for event
protected final List<EventDropHolder> _dropList = new ArrayList<>(); protected final List<EventDropHolder> _dropList = new ArrayList<>();
// Items to destroy when event ends. // Items to destroy when event ends
protected final List<Integer> _destroyItemsOnEnd = new ArrayList<>(); protected final List<Integer> _destroyItemsOnEnd = new ArrayList<>();
protected class NpcSpawn protected class NpcSpawn
@@ -325,11 +330,10 @@ public class LongTimeEvent extends Quest
// Add event drops. // Add event drops.
EventDropManager.getInstance().addDrops(this, _dropList); EventDropManager.getInstance().addDrops(this, _dropList);
// Add spawns. // Add spawns on server start.
final Long millisToEventEnd = _eventPeriod.getEndDate().getTime() - System.currentTimeMillis(); if (!_spawnList.isEmpty())
for (NpcSpawn spawn : _spawnList)
{ {
addSpawn(spawn.npcId, spawn.loc.getX(), spawn.loc.getY(), spawn.loc.getZ(), spawn.loc.getHeading(), false, millisToEventEnd, false); Containers.Global().addListener(new ConsumerEventListener(Containers.Global(), EventType.ON_SERVER_START, _spawnNpcs, this));
} }
// Enable town shrines. // Enable town shrines.
@@ -351,9 +355,24 @@ public class LongTimeEvent extends Quest
} }
// Schedule event end. // Schedule event end.
final Long millisToEventEnd = _eventPeriod.getEndDate().getTime() - System.currentTimeMillis();
ThreadPool.schedule(new ScheduleEnd(), millisToEventEnd); ThreadPool.schedule(new ScheduleEnd(), millisToEventEnd);
} }
/**
* Event spawns must initialize after server loads scripts.
*/
private final Consumer<OnServerStart> _spawnNpcs = event ->
{
final Long millisToEventEnd = _eventPeriod.getEndDate().getTime() - System.currentTimeMillis();
for (NpcSpawn spawn : _spawnList)
{
addSpawn(spawn.npcId, spawn.loc.getX(), spawn.loc.getY(), spawn.loc.getZ(), spawn.loc.getHeading(), false, millisToEventEnd, false);
}
Containers.Global().removeListenerIf(EventType.ON_SERVER_START, listener -> listener.getOwner() == this);
};
protected class ScheduleEnd implements Runnable protected class ScheduleEnd implements Runnable
{ {
@Override @Override

View File

@@ -28,6 +28,7 @@ import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Locale; import java.util.Locale;
import java.util.Set; import java.util.Set;
import java.util.function.Consumer;
import org.w3c.dom.Document; import org.w3c.dom.Document;
import org.w3c.dom.Node; import org.w3c.dom.Node;
@@ -45,6 +46,10 @@ import org.l2jmobius.gameserver.model.Location;
import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.announce.EventAnnouncement; import org.l2jmobius.gameserver.model.announce.EventAnnouncement;
import org.l2jmobius.gameserver.model.events.Containers;
import org.l2jmobius.gameserver.model.events.EventType;
import org.l2jmobius.gameserver.model.events.impl.OnServerStart;
import org.l2jmobius.gameserver.model.events.listeners.ConsumerEventListener;
import org.l2jmobius.gameserver.model.holders.EventDropHolder; import org.l2jmobius.gameserver.model.holders.EventDropHolder;
import org.l2jmobius.gameserver.script.DateRange; import org.l2jmobius.gameserver.script.DateRange;
import org.l2jmobius.gameserver.util.Broadcast; import org.l2jmobius.gameserver.util.Broadcast;
@@ -66,13 +71,13 @@ public class LongTimeEvent extends Quest
protected String _endMsg = ""; protected String _endMsg = "";
protected int _enterAnnounceId = -1; protected int _enterAnnounceId = -1;
// NPCs to spawm and their spawn points // NPCs to spawn and their spawn points
protected final List<NpcSpawn> _spawnList = new ArrayList<>(); protected final List<NpcSpawn> _spawnList = new ArrayList<>();
// Drop data for event // Drop data for event
protected final List<EventDropHolder> _dropList = new ArrayList<>(); protected final List<EventDropHolder> _dropList = new ArrayList<>();
// Items to destroy when event ends. // Items to destroy when event ends
protected final List<Integer> _destroyItemsOnEnd = new ArrayList<>(); protected final List<Integer> _destroyItemsOnEnd = new ArrayList<>();
protected class NpcSpawn protected class NpcSpawn
@@ -333,11 +338,10 @@ public class LongTimeEvent extends Quest
// Add event drops. // Add event drops.
EventDropManager.getInstance().addDrops(this, _dropList); EventDropManager.getInstance().addDrops(this, _dropList);
// Add spawns. // Add spawns on server start.
final Long millisToEventEnd = _eventPeriod.getEndDate().getTime() - System.currentTimeMillis(); if (!_spawnList.isEmpty())
for (NpcSpawn spawn : _spawnList)
{ {
addSpawn(spawn.npcId, spawn.loc.getX(), spawn.loc.getY(), spawn.loc.getZ(), spawn.loc.getHeading(), false, millisToEventEnd, false); Containers.Global().addListener(new ConsumerEventListener(Containers.Global(), EventType.ON_SERVER_START, _spawnNpcs, this));
} }
// Enable town shrines. // Enable town shrines.
@@ -359,9 +363,24 @@ public class LongTimeEvent extends Quest
} }
// Schedule event end. // Schedule event end.
final Long millisToEventEnd = _eventPeriod.getEndDate().getTime() - System.currentTimeMillis();
ThreadPool.schedule(new ScheduleEnd(), millisToEventEnd); ThreadPool.schedule(new ScheduleEnd(), millisToEventEnd);
} }
/**
* Event spawns must initialize after server loads scripts.
*/
private final Consumer<OnServerStart> _spawnNpcs = event ->
{
final Long millisToEventEnd = _eventPeriod.getEndDate().getTime() - System.currentTimeMillis();
for (NpcSpawn spawn : _spawnList)
{
addSpawn(spawn.npcId, spawn.loc.getX(), spawn.loc.getY(), spawn.loc.getZ(), spawn.loc.getHeading(), false, millisToEventEnd, false);
}
Containers.Global().removeListenerIf(EventType.ON_SERVER_START, listener -> listener.getOwner() == this);
};
protected class ScheduleEnd implements Runnable protected class ScheduleEnd implements Runnable
{ {
@Override @Override

View File

@@ -28,6 +28,7 @@ import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Locale; import java.util.Locale;
import java.util.Set; import java.util.Set;
import java.util.function.Consumer;
import org.w3c.dom.Document; import org.w3c.dom.Document;
import org.w3c.dom.Node; import org.w3c.dom.Node;
@@ -45,6 +46,10 @@ import org.l2jmobius.gameserver.model.Location;
import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.announce.EventAnnouncement; import org.l2jmobius.gameserver.model.announce.EventAnnouncement;
import org.l2jmobius.gameserver.model.events.Containers;
import org.l2jmobius.gameserver.model.events.EventType;
import org.l2jmobius.gameserver.model.events.impl.OnServerStart;
import org.l2jmobius.gameserver.model.events.listeners.ConsumerEventListener;
import org.l2jmobius.gameserver.model.holders.EventDropHolder; import org.l2jmobius.gameserver.model.holders.EventDropHolder;
import org.l2jmobius.gameserver.script.DateRange; import org.l2jmobius.gameserver.script.DateRange;
import org.l2jmobius.gameserver.util.Broadcast; import org.l2jmobius.gameserver.util.Broadcast;
@@ -66,13 +71,13 @@ public class LongTimeEvent extends Quest
protected String _endMsg = ""; protected String _endMsg = "";
protected int _enterAnnounceId = -1; protected int _enterAnnounceId = -1;
// NPCs to spawm and their spawn points // NPCs to spawn and their spawn points
protected final List<NpcSpawn> _spawnList = new ArrayList<>(); protected final List<NpcSpawn> _spawnList = new ArrayList<>();
// Drop data for event // Drop data for event
protected final List<EventDropHolder> _dropList = new ArrayList<>(); protected final List<EventDropHolder> _dropList = new ArrayList<>();
// Items to destroy when event ends. // Items to destroy when event ends
protected final List<Integer> _destroyItemsOnEnd = new ArrayList<>(); protected final List<Integer> _destroyItemsOnEnd = new ArrayList<>();
protected class NpcSpawn protected class NpcSpawn
@@ -333,11 +338,10 @@ public class LongTimeEvent extends Quest
// Add event drops. // Add event drops.
EventDropManager.getInstance().addDrops(this, _dropList); EventDropManager.getInstance().addDrops(this, _dropList);
// Add spawns. // Add spawns on server start.
final Long millisToEventEnd = _eventPeriod.getEndDate().getTime() - System.currentTimeMillis(); if (!_spawnList.isEmpty())
for (NpcSpawn spawn : _spawnList)
{ {
addSpawn(spawn.npcId, spawn.loc.getX(), spawn.loc.getY(), spawn.loc.getZ(), spawn.loc.getHeading(), false, millisToEventEnd, false); Containers.Global().addListener(new ConsumerEventListener(Containers.Global(), EventType.ON_SERVER_START, _spawnNpcs, this));
} }
// Enable town shrines. // Enable town shrines.
@@ -359,9 +363,24 @@ public class LongTimeEvent extends Quest
} }
// Schedule event end. // Schedule event end.
final Long millisToEventEnd = _eventPeriod.getEndDate().getTime() - System.currentTimeMillis();
ThreadPool.schedule(new ScheduleEnd(), millisToEventEnd); ThreadPool.schedule(new ScheduleEnd(), millisToEventEnd);
} }
/**
* Event spawns must initialize after server loads scripts.
*/
private final Consumer<OnServerStart> _spawnNpcs = event ->
{
final Long millisToEventEnd = _eventPeriod.getEndDate().getTime() - System.currentTimeMillis();
for (NpcSpawn spawn : _spawnList)
{
addSpawn(spawn.npcId, spawn.loc.getX(), spawn.loc.getY(), spawn.loc.getZ(), spawn.loc.getHeading(), false, millisToEventEnd, false);
}
Containers.Global().removeListenerIf(EventType.ON_SERVER_START, listener -> listener.getOwner() == this);
};
protected class ScheduleEnd implements Runnable protected class ScheduleEnd implements Runnable
{ {
@Override @Override

View File

@@ -28,6 +28,7 @@ import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Locale; import java.util.Locale;
import java.util.Set; import java.util.Set;
import java.util.function.Consumer;
import org.w3c.dom.Document; import org.w3c.dom.Document;
import org.w3c.dom.Node; import org.w3c.dom.Node;
@@ -45,6 +46,10 @@ import org.l2jmobius.gameserver.model.Location;
import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.announce.EventAnnouncement; import org.l2jmobius.gameserver.model.announce.EventAnnouncement;
import org.l2jmobius.gameserver.model.events.Containers;
import org.l2jmobius.gameserver.model.events.EventType;
import org.l2jmobius.gameserver.model.events.impl.OnServerStart;
import org.l2jmobius.gameserver.model.events.listeners.ConsumerEventListener;
import org.l2jmobius.gameserver.model.holders.EventDropHolder; import org.l2jmobius.gameserver.model.holders.EventDropHolder;
import org.l2jmobius.gameserver.script.DateRange; import org.l2jmobius.gameserver.script.DateRange;
import org.l2jmobius.gameserver.util.Broadcast; import org.l2jmobius.gameserver.util.Broadcast;
@@ -66,13 +71,13 @@ public class LongTimeEvent extends Quest
protected String _endMsg = ""; protected String _endMsg = "";
protected int _enterAnnounceId = -1; protected int _enterAnnounceId = -1;
// NPCs to spawm and their spawn points // NPCs to spawn and their spawn points
protected final List<NpcSpawn> _spawnList = new ArrayList<>(); protected final List<NpcSpawn> _spawnList = new ArrayList<>();
// Drop data for event // Drop data for event
protected final List<EventDropHolder> _dropList = new ArrayList<>(); protected final List<EventDropHolder> _dropList = new ArrayList<>();
// Items to destroy when event ends. // Items to destroy when event ends
protected final List<Integer> _destroyItemsOnEnd = new ArrayList<>(); protected final List<Integer> _destroyItemsOnEnd = new ArrayList<>();
protected class NpcSpawn protected class NpcSpawn
@@ -333,11 +338,10 @@ public class LongTimeEvent extends Quest
// Add event drops. // Add event drops.
EventDropManager.getInstance().addDrops(this, _dropList); EventDropManager.getInstance().addDrops(this, _dropList);
// Add spawns. // Add spawns on server start.
final Long millisToEventEnd = _eventPeriod.getEndDate().getTime() - System.currentTimeMillis(); if (!_spawnList.isEmpty())
for (NpcSpawn spawn : _spawnList)
{ {
addSpawn(spawn.npcId, spawn.loc.getX(), spawn.loc.getY(), spawn.loc.getZ(), spawn.loc.getHeading(), false, millisToEventEnd, false); Containers.Global().addListener(new ConsumerEventListener(Containers.Global(), EventType.ON_SERVER_START, _spawnNpcs, this));
} }
// Enable town shrines. // Enable town shrines.
@@ -359,9 +363,24 @@ public class LongTimeEvent extends Quest
} }
// Schedule event end. // Schedule event end.
final Long millisToEventEnd = _eventPeriod.getEndDate().getTime() - System.currentTimeMillis();
ThreadPool.schedule(new ScheduleEnd(), millisToEventEnd); ThreadPool.schedule(new ScheduleEnd(), millisToEventEnd);
} }
/**
* Event spawns must initialize after server loads scripts.
*/
private final Consumer<OnServerStart> _spawnNpcs = event ->
{
final Long millisToEventEnd = _eventPeriod.getEndDate().getTime() - System.currentTimeMillis();
for (NpcSpawn spawn : _spawnList)
{
addSpawn(spawn.npcId, spawn.loc.getX(), spawn.loc.getY(), spawn.loc.getZ(), spawn.loc.getHeading(), false, millisToEventEnd, false);
}
Containers.Global().removeListenerIf(EventType.ON_SERVER_START, listener -> listener.getOwner() == this);
};
protected class ScheduleEnd implements Runnable protected class ScheduleEnd implements Runnable
{ {
@Override @Override