コード例 #1
0
ファイル: TagUpdateMessage.java プロジェクト: oglcraft/oglmod
    @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;
    }