@Override public IMessage onMessage(final TagUpdateMessage message, final MessageContext ctx) { NetUtil.addScheduledTask( ctx, new Runnable() { @Override public void run() { // FIXME debug System.out.println(message.toString()); Entity entity = NetUtil.getSidedEntity(message.uuid, ctx); // if the entity no longer exists, return if (entity == null) { System.out.println("entity: " + message.uuid + " not found!"); return; } // merge living entity attributes, if present if (message.tags.hasKey("Attributes") && entity instanceof EntityLivingBase) { SharedMonsterAttributes.setAttributeModifiers( ((EntityLivingBase) entity).getAttributeMap(), message.tags.getTagList("Attributes", 10)); } // check for auras message if (message.tags.hasKey(SpellBase.AURAS_TAG)) { // currently, the message is a full update, so remove prior to merge entity.getEntityData().removeTag(SpellBase.AURAS_TAG); } // update entity's tags entity.getEntityData().merge(message.tags); } }); return null; }