Beispiel #1
0
 /** Generate the RPClass */
 public static void generateRPClass() {
   RPClass clazz = new RPClass("blocktarget");
   clazz.isA("area");
   clazz.addAttribute("x", Type.INT);
   clazz.addAttribute("y", Type.INT);
   clazz.addAttribute("shape", Type.STRING);
 }
 public static void generateRPClass() {
   try {
     final RPClass pet = new RPClass("pet");
     pet.isA("creature");
     pet.addAttribute("weight", Type.BYTE);
     pet.addAttribute("eat", Type.FLAG);
   } catch (final SyntaxException e) {
     LOGGER.error("cannot generate RPClass", e);
   }
 }
 public static void generateRPClasses() {
   ItemTestHelper.generateRPClasses();
   if (!RPClass.hasRPClass("corpse")) {
     Corpse.generateRPClass();
   }
 }
 /** Creates the rpclass. */
 public static void generateRPClass() {
   final RPClass rpclass = new RPClass(Events.PRIVATE_TEXT);
   rpclass.add(DefinitionClass.ATTRIBUTE, TEXT_TYPE, Type.STRING);
   rpclass.add(DefinitionClass.ATTRIBUTE, CHANNEL, Type.STRING);
   rpclass.add(DefinitionClass.ATTRIBUTE, TEXT, Type.LONG_STRING);
 }
  /** sends id, version and distribution */
  public static void send() {
    String clientid = readID();
    if (clientid == null) {
      clientid = generateRandomString();
      saveID(clientid);
    }

    final RPAction action = new RPAction();

    // compatibility with old servers
    if (RPClass.getRPClass("cstatus") != null) {
      action.put("type", "cstatus");
    } else {
      action.put("type", "cid");
    }

    // a client id to help with the investigation of hacked accounts
    // especially in the common "angry sibling" case.
    if (clientid != null) {
      action.put("cid", clientid);
    }

    // the client version, the server will deactivate certain features that
    // are incompatible with old clients. E. g. changing of light and dark
    // in the current zone is implemented by retransmitting the tileset
    // information. an old client would mistake that for a zone change and
    // hang.
    String version = Debug.VERSION;
    if (Debug.PRE_RELEASE_VERSION != null) {
      version = version + " - " + Debug.PRE_RELEASE_VERSION;
    }
    action.put("version", version);

    // extract the signer of the client, so that we can ask bug
    // reporters to try again with the official client, if they
    // are using an unofficial one.
    try {
      Class<?> clazz = Class.forName("games.stendhal.client.update.Starter");
      if (clazz != null) {
        Object[] objects = clazz.getSigners();
        if (objects instanceof Certificate[]) {
          Certificate[] certs = (Certificate[]) objects;
          if ((certs.length > 0)) {
            byte[] key = certs[0].getPublicKey().getEncoded();
            action.put("dist", Hash.toHexString(Hash.hash(key)));
          }
        }
      }

      // Throwable: both errors and exceptions
    } catch (Throwable e) {
      logger.error(e, e);
    }

    // Get build number. The class is not in CVS to prevent lots of unwanted
    // conflicts. This has, however, the side effect, that it is missing in
    // an IDE (e. g. Eclipes) environment.
    // The build number is especially helpful for pre releases
    try {
      Class<?> clazz = Class.forName("games.stendhal.client.StendhalBuild");
      Object buildNumber = clazz.getMethod("getBuildNumber").invoke(null);
      if (buildNumber != null) {
        action.put("build", buildNumber.toString());
      }
    } catch (Throwable e) {
      logger.debug(e, e);
    }

    ClientSingletonRepository.getClientFramework().send(action);
  }