(function() { var SEARCH_RADIUS = 500; var knownEntities = Entities.findEntities(MyAvatar.position, SEARCH_RADIUS); var knownDomainEntities = []; // From all the entities we know about, store the ones that are not client-only knownEntities.foreach(function(entity) { if (!Entities.getEntityProperties(entity, 'clientOnly').clientOnly) { knownDomainEntities.push(entity); } }); function checkOnEntityAdd(entityID){ print("entityadded ", entityID); knownDomainEntities.foreach(function(knownEntity) { if (knownEntity === entityID) { // this is the same as an entity we know about, start the alarm var properties = Entities.getEntityPropeties(entityID, ['clientOnly', 'lastEditedBy']); // We only care about checking on client-only adds, others are filtered if (properties.clientOnly) { // This is an avatar entity, assume malicious intent - otherwise something might have been re-added, e.g. trivia print (entityID + " added as avatar entity but also in known domain entities"); print (entityID + " was last edited by node " + properties.lastEditedBy); } } }); } Entities.addingEntity.connect(checkOnEntityAdd); Script.scriptEnding.disconnect(checkOnEntityAdd); });