mirror of
https://github.com/ProjectSWGCore/NGECore2.git
synced 2026-07-31 01:15:57 -04:00
Added respawning (ie. for lifeday trees)
This commit is contained in:
@@ -33,7 +33,9 @@ import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Random;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
import java.util.concurrent.Executors;
|
||||
import java.util.concurrent.ScheduledExecutorService;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.concurrent.atomic.AtomicLong;
|
||||
|
||||
import resources.common.*;
|
||||
@@ -51,6 +53,7 @@ import protocol.swg.CmdStartScene;
|
||||
import protocol.swg.HeartBeatMessage;
|
||||
import protocol.swg.ParametersMessage;
|
||||
import protocol.swg.SelectCharacter;
|
||||
import protocol.swg.ServerTimeMessage;
|
||||
import protocol.swg.UnkByteFlag;
|
||||
import engine.clientdata.ClientFileManager;
|
||||
import engine.clientdata.visitors.CrcStringTableVisitor;
|
||||
@@ -94,6 +97,8 @@ public class ObjectService implements INetworkDispatch {
|
||||
|
||||
private Map<String, PyObject> serverTemplates = new ConcurrentHashMap<String, PyObject>();
|
||||
|
||||
private final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
|
||||
|
||||
public ObjectService(final NGECore core) {
|
||||
this.core = core;
|
||||
databaseConnection = core.getDatabase1();
|
||||
@@ -249,6 +254,24 @@ public class ObjectService implements INetworkDispatch {
|
||||
|
||||
public void destroyObject(SWGObject object) {
|
||||
|
||||
if (object instanceof TangibleObject &&
|
||||
((TangibleObject) object).getRespawnTime() > 0) {
|
||||
final long objectId = object.getObjectID();
|
||||
final String Template = object.getTemplate();
|
||||
final Planet planet = object.getPlanet();
|
||||
final Point3D position = object.getPosition();
|
||||
final Quaternion orientation = object.getOrientation();
|
||||
|
||||
scheduler.scheduleWithFixedDelay(new Runnable() {
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
createObject(Template, objectId, planet, position, orientation);
|
||||
}
|
||||
|
||||
}, 0, ((TangibleObject) object).getRespawnTime(), TimeUnit.SECONDS);
|
||||
}
|
||||
|
||||
object.viewChildren(object, true, true, new Traverser() {
|
||||
@Override
|
||||
public void process(SWGObject obj) {
|
||||
|
||||
Reference in New Issue
Block a user