public static List<AppliedValue> getValues(Class<?> returns) {
   List<AppliedValue> values = new ArrayList<>();
   for (AppliedValue value : values()) {
     if (value.getReturns() == returns) {
       values.add(value);
     }
   }
   return values;
 }
  public void apply(Context context, boolean log) {
    List<AppliedValue> applied = new ArrayList<>();
    if (context.hasMovement()) {
      PlayingUserMoveEvent move = context.getMovement();
      if (isInside(move.getFrom(), log) && isInside(move.getTo(), log)) {
        return;
      } else if (!isInside(move.getFrom(), log) && !isInside(move.getTo(), log)) {
        return;
      } else if (!isInside(move.getFrom(), log) && isInside(move.getTo(), log)) {
        applied.add(AppliedValue.ENTER);
        // applied.add(AppliedValue.KIT);
        applied.add(AppliedValue.VELOCITY);
      } else if (isInside(move.getFrom(), log) && !isInside(move.getTo(), log)) {
        applied.add(AppliedValue.LEAVE);
      }
    }

    if (context.hasModification()) {
      BlockChangeEvent block = context.getModification();

      if (isInside(block.getLocation(), log)) {
        applied.add(AppliedValue.BLOCK);
        if (block.isPlace()) {
          applied.add(AppliedValue.BLOCK_PLACE);
        } else if (block.isBreak()) {
          applied.add(AppliedValue.BLOCK_BREAK);
        }
      }
    }

    /*
    if(applied.size() > 0) {
    	Log.info(getName() + ": " + applied);
    }
    */

    String message = null;
    if (hasValue(AppliedValue.MESSAGE)) {
      message = (String) values.get(AppliedValue.MESSAGE);
      message = ChatColor.RED + message.replace("`", "§").replace("&", "§");
    }

    for (AppliedValue value : AppliedValue.getValues(Filter.class)) {
      handle(message, context, applied, value);
    }

    /*
    if(applied.contains(AppliedValue.KIT)) {
    	if(hasValue(AppliedValue.KIT)) {
    		KitModule sporkKit = (KitModule) values.get(AppliedValue.KIT);
    		sporkKit.apply(context.getPlayer());
    	}
    }
    */

    // TODO: add support for velocities
  }