mirror of
https://github.com/simon987/Much-Assembly-Required.git
synced 2025-12-13 14:49:03 +00:00
More refactoring, updated mongodb driver + transactions on supported clusters
This commit is contained in:
@@ -22,7 +22,9 @@
|
||||
<orderEntry type="module" module-name="Server" />
|
||||
<orderEntry type="library" name="Maven: org.apache.commons:commons-text:1.2" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.commons:commons-lang3:3.7" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.mongodb:mongo-java-driver:3.7.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.mongodb:mongodb-driver-sync:3.9.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.mongodb:bson:3.9.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.mongodb:mongodb-driver-core:3.9.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.springframework.security:spring-security-core:5.0.5.RELEASE" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.springframework:spring-aop:5.0.6.RELEASE" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.springframework:spring-beans:5.0.6.RELEASE" level="project" />
|
||||
|
||||
@@ -65,6 +65,13 @@ public class Factory extends Structure implements Updatable, MessageReceiver {
|
||||
|
||||
Settlement settlement = NpcPlugin.settlementMap.get(getWorld().getId());
|
||||
|
||||
if (settlement == null) {
|
||||
//Only happens when server is killed during save function
|
||||
getWorld().decUpdatable();
|
||||
setDead(true);
|
||||
return;
|
||||
}
|
||||
|
||||
if (cooldown == 0) {
|
||||
if (settlement.getNpcs().size() < MAX_NPC_COUNT) {
|
||||
Point p = getAdjacentTile();
|
||||
@@ -72,6 +79,9 @@ public class Factory extends Structure implements Updatable, MessageReceiver {
|
||||
if (p != null) {
|
||||
NonPlayerCharacter npc = spawnNPC(p);
|
||||
settlement.addNpc(npc);
|
||||
|
||||
getWorld().addObject(npc);
|
||||
getWorld().incUpdatable();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -102,8 +112,6 @@ public class Factory extends Structure implements Updatable, MessageReceiver {
|
||||
npc.setObjectId(new ObjectId());
|
||||
npc.setX(p.x);
|
||||
npc.setY(p.y);
|
||||
getWorld().addObject(npc);
|
||||
getWorld().incUpdatable();
|
||||
return npc;
|
||||
}
|
||||
|
||||
@@ -114,8 +122,6 @@ public class Factory extends Structure implements Updatable, MessageReceiver {
|
||||
npc.setObjectId(new ObjectId());
|
||||
npc.setX(p.x);
|
||||
npc.setY(p.y);
|
||||
getWorld().addObject(npc);
|
||||
getWorld().incUpdatable();
|
||||
|
||||
this.locked = true;
|
||||
this.programIndex = 0;
|
||||
@@ -126,8 +132,6 @@ public class Factory extends Structure implements Updatable, MessageReceiver {
|
||||
@Override
|
||||
public boolean sendMessage(char[] message) {
|
||||
|
||||
String strMessage = String.valueOf(message);
|
||||
|
||||
if (locked) {
|
||||
Settlement settlement = NpcPlugin.settlementMap.get(getWorld().getId());
|
||||
|
||||
@@ -136,10 +140,10 @@ public class Factory extends Structure implements Updatable, MessageReceiver {
|
||||
|
||||
return true;
|
||||
}
|
||||
} else if (programIndex <= 2048) { //todo config
|
||||
} else if (programIndex <= PROGRAM_SIZE) {
|
||||
|
||||
if (programIndex == 0) {
|
||||
program = new char[2048];
|
||||
program = new char[PROGRAM_SIZE];
|
||||
}
|
||||
|
||||
System.arraycopy(message, 0, program, programIndex, message.length);
|
||||
|
||||
@@ -2,6 +2,7 @@ package net.simon987.npcplugin;
|
||||
|
||||
import net.simon987.server.GameServer;
|
||||
import net.simon987.server.assembly.*;
|
||||
import net.simon987.server.event.ObjectDeathEvent;
|
||||
import net.simon987.server.game.item.Item;
|
||||
import net.simon987.server.game.item.ItemVoid;
|
||||
import net.simon987.server.game.objects.Action;
|
||||
@@ -87,6 +88,11 @@ public class HackedNPC extends NonPlayerCharacter implements ControllableUnit {
|
||||
module.update();
|
||||
}
|
||||
|
||||
//Self-destroy when age limit is reached
|
||||
if (getAge() >= NonPlayerCharacter.LIFETIME) {
|
||||
setDead(true);
|
||||
}
|
||||
|
||||
//Don't bother calling checkCompleted()
|
||||
getTask().tick(this);
|
||||
}
|
||||
@@ -312,6 +318,20 @@ public class HackedNPC extends NonPlayerCharacter implements ControllableUnit {
|
||||
return json;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onDeadCallback() {
|
||||
|
||||
getWorld().decUpdatable();
|
||||
|
||||
if (getSettlement() != null && getSettlement().getNpcs() != null) {
|
||||
getSettlement().getNpcs().remove(this);
|
||||
}
|
||||
|
||||
GameServer.INSTANCE.getEventDispatcher().dispatch(new ObjectDeathEvent(this));
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public JSONObject debugJsonSerialise() {
|
||||
return jsonSerialise();
|
||||
|
||||
@@ -43,12 +43,6 @@ public abstract class NonPlayerCharacter extends GameObject implements Updatable
|
||||
|
||||
private Settlement settlement;
|
||||
|
||||
/**
|
||||
* If set to true, the NPC will be destroyed next tick if it is
|
||||
* not linked to a Factory
|
||||
*/
|
||||
private boolean selfDestroyNextTick = false;
|
||||
|
||||
/**
|
||||
* Age of the npc, in ticks
|
||||
*/
|
||||
@@ -92,11 +86,7 @@ public abstract class NonPlayerCharacter extends GameObject implements Updatable
|
||||
|
||||
//Destroy NPCs that are not linked with a Settlement
|
||||
if (settlement == null) {
|
||||
if (selfDestroyNextTick) {
|
||||
setDead(true);
|
||||
}
|
||||
|
||||
selfDestroyNextTick = true;
|
||||
setDead(true);
|
||||
}
|
||||
|
||||
//Heal the NPC
|
||||
|
||||
@@ -37,7 +37,8 @@ public class WorldCreationListener implements GameEventListener {
|
||||
World world = (World) event.getSource();
|
||||
|
||||
try {
|
||||
NpcPlugin.settlementMap.put(world.getId(), new Settlement(world));
|
||||
Settlement settlement = new Settlement(world);
|
||||
NpcPlugin.settlementMap.put(world.getId(), settlement);
|
||||
} catch (WorldGenerationException e) {
|
||||
LogManager.LOGGER.fine(String.format("Exception during settlement generation: %s.",
|
||||
e.getMessage()));
|
||||
|
||||
Reference in New Issue
Block a user