@Override
	public void read(Json json, JsonValue val) {
		this.ID = val.getString("ID");
		this.sceneID = val.getInt("sceneID");
		float posX = val.getFloat("posX");
		float posY = val.getFloat("posY");
		Vector2 pos = new Vector2(posX, posY);
		this.setPosition(pos);
		this.health = val.getDouble("health");
		this.burning = val.getBoolean("burning");
		this.frozen = val.getBoolean("frozen");
		this.burnTime = val.getFloat("burnTime");
		this.burnDelay = val.getFloat("burnDelay");
		this.facingLeft = val.getBoolean("facingLeft");
		this.isInteractable = val.getBoolean("isInteractable");
		this.origLayer = this.layer = val.getShort("layer");
		
		try {
			this.script = json.fromJson(Script.class, val.get("script").toString());
			this.script.setOwner(this);
			this.script.setMainRef(this.main);
		} catch (SerializationException | NullPointerException e) {}
		
		try {
			this.attackScript = json.fromJson(Script.class, val.get("attackScript").toString());
			this.attackScript.setOwner(this);
			this.attackScript.setMainRef(this.main);
		} catch (SerializationException | NullPointerException e) {}
		
		Array<Integer> mobRef = new Array<Integer>();
		for (JsonValue child = val.get("followers").child(); child != null; child = child.next()) {
			mobRef.add(child.getInt("value"));
		}				
		if (mobRef.size > 0) {
			JsonSerializer.pushEntityRef(this, mobRef);
		}
		
		//other stuff from constructor
		setDimensions();	
		loadSprite();
	}