|
|
|
@ -41,6 +41,7 @@ import java.util.HashSet;
@@ -41,6 +41,7 @@ import java.util.HashSet;
|
|
|
|
|
import java.util.Iterator; |
|
|
|
|
import java.util.concurrent.ConcurrentHashMap; |
|
|
|
|
import java.util.concurrent.ThreadLocalRandom; |
|
|
|
|
import java.util.concurrent.atomic.AtomicBoolean; |
|
|
|
|
import java.util.concurrent.locks.ReentrantReadWriteLock; |
|
|
|
|
|
|
|
|
|
public class City extends AbstractWorldObject { |
|
|
|
@ -80,6 +81,7 @@ public class City extends AbstractWorldObject {
@@ -80,6 +81,7 @@ public class City extends AbstractWorldObject {
|
|
|
|
|
private String hash; |
|
|
|
|
public Warehouse warehouse; |
|
|
|
|
public Realm realm; |
|
|
|
|
public AtomicBoolean isDestroyed = new AtomicBoolean(false); |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* ResultSet Constructor |
|
|
|
@ -1102,10 +1104,14 @@ public class City extends AbstractWorldObject {
@@ -1102,10 +1104,14 @@ public class City extends AbstractWorldObject {
|
|
|
|
|
|
|
|
|
|
public final void destroy() { |
|
|
|
|
|
|
|
|
|
Thread destroyCityThread = new Thread(new DestroyCityThread(this)); |
|
|
|
|
if (this.isDestroyed.compareAndSet(false, true)) { |
|
|
|
|
|
|
|
|
|
destroyCityThread.setName("destroyCity:" + this.getParent().zoneName); |
|
|
|
|
destroyCityThread.start(); |
|
|
|
|
Thread destroyCityThread = new Thread(new DestroyCityThread(this)); |
|
|
|
|
|
|
|
|
|
destroyCityThread.setName("destroyCity:" + this.getParent().zoneName); |
|
|
|
|
destroyCityThread.start(); |
|
|
|
|
} else |
|
|
|
|
Logger.error("Attempt to destroy destroyed city"); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public final void transfer(AbstractCharacter newOwner) { |
|
|
|
|