public synchronized String getShortName(String realName) {
        realName = realName.trim();
        //prüfen, ob bereits ein shortname existiert
        String shortName = realToShortNames.get(realName.toLowerCase());
        if (shortName != null) {
            return shortName;
        }
        //ansonsten prüfen, ob der name zu lang ist, oder ob es einen gleichen shortnamen gibt (dann muss er angepasst werden)
        if (realName.length() <= NAME_LENGTH_MAX && !shortToRealNames.containsKey(realName.toLowerCase())) {
            return realName;
        }
        //der name ist ungültig, also müssen wir einen passenden namen suchen
        int counter = 0;
        while (true) {
            String countString = counter == 0 ? "" : Integer.toString(counter);
            shortName = realName.substring(0, NAME_LENGTH_MAX - countString.length()) + countString;
            String shortNameLower = shortName.toLowerCase();
            //namen von vorhandenen spielern sind immer ungültig
            //namen, die schon kurznamen sind, sind auch ungültig
            if (plugin.getServer().getOfflinePlayer(shortName).hasPlayedBefore() || realToShortNames.containsKey(shortNameLower) || shortToRealNames.containsKey(shortNameLower)) {
                counter += 1;
                continue;
            }
            //der name ist gültig: eintragen und speichern
            realToShortNames.put(realName.toLowerCase(), shortName);
            shortToRealNames.put(shortNameLower, realName);
            namesConfig.set(realName, shortName);
            try {
                namesConfig.save(databaseFile);
            } catch (Exception e) {
                plugin.getLogger().log(Level.SEVERE, "Could not save short names database " + databaseFile, e);
            }
            return shortName;
        }
    }