diff --git a/gameserver/src/main/java/brainwine/gameserver/entity/player/Player.java b/gameserver/src/main/java/brainwine/gameserver/entity/player/Player.java index 3d93485..6299cd3 100644 --- a/gameserver/src/main/java/brainwine/gameserver/entity/player/Player.java +++ b/gameserver/src/main/java/brainwine/gameserver/entity/player/Player.java @@ -90,14 +90,14 @@ public class Player extends Entity implements CommandExecutor { private final Map skills = new HashMap<>(); private final Map activeChunks = new HashMap<>(); private final Map dialogs = new HashMap<>(); - private final Inventory inventory = new Inventory(); private Item heldItem = Item.AIR; // TODO send on entity add private int teleportX; private int teleportY; private long lastHeartbeat; private Connection connection; - public Player(String documentId, String name, Zone zone) { + @ConstructorProperties({"documentId", "name", "current_zone"}) + public Player(@JacksonInject("documentId") String documentId, String name, Zone zone) { super(zone); for(Skill skill : Skill.values()) { @@ -120,18 +120,6 @@ public class Player extends Entity implements CommandExecutor { settings.put("appearance", test); } - @JsonCreator - private static Player create(@JacksonInject("documentId") String documentId, @JsonProperty("name") String name, @JsonProperty("current_zone") String currentZone) { - ZoneManager zoneManager = GameServer.getInstance().getZoneManager(); - Zone zone = zoneManager.getZone(currentZone); - - if(zone == null) { - zone = zoneManager.getRandomZone(); - } - - return new Player(documentId, name, zone); - } - @Override public EntityType getType() { return EntityType.PLAYER; diff --git a/gameserver/src/main/java/brainwine/gameserver/entity/player/PlayerManager.java b/gameserver/src/main/java/brainwine/gameserver/entity/player/PlayerManager.java index 2799805..1651296 100644 --- a/gameserver/src/main/java/brainwine/gameserver/entity/player/PlayerManager.java +++ b/gameserver/src/main/java/brainwine/gameserver/entity/player/PlayerManager.java @@ -56,6 +56,11 @@ public class PlayerManager { try { Player player = mapper.readValue(file, Player.class); + + if(player.getZone() == null) { + player.setZone(GameServer.getInstance().getZoneManager().getRandomZone()); + } + String name = player.getName(); if(playersByName.containsKey(name)) { diff --git a/gameserver/src/main/java/brainwine/gameserver/zone/Zone.java b/gameserver/src/main/java/brainwine/gameserver/zone/Zone.java index 2e23f01..e616f16 100644 --- a/gameserver/src/main/java/brainwine/gameserver/zone/Zone.java +++ b/gameserver/src/main/java/brainwine/gameserver/zone/Zone.java @@ -13,9 +13,11 @@ import java.util.Map.Entry; import java.util.Set; import com.fasterxml.jackson.annotation.JacksonInject; +import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonIncludeProperties; import com.fasterxml.jackson.annotation.JsonValue; +import brainwine.gameserver.GameServer; import brainwine.gameserver.entity.Entity; import brainwine.gameserver.entity.EntityStatus; import brainwine.gameserver.entity.player.ChatType; @@ -96,6 +98,11 @@ public class Zone { Arrays.fill(sunlight, height); } + @JsonCreator + private static Zone fromId(String id) { + return GameServer.getInstance().getZoneManager().getZone(id); + } + public void tick() { for(Entity entity : getEntities()) { entity.tick();