В настоящее время я работаю над небольшой RPG-плагин, и на данный момент я пытаюсь зачитывает Уровень моба, который вызван через следующий код:Bukkit: Считать пользовательское имя Строка/Extract Integer
public static void summonMob(EntityType entTy, int level, World w, Location loc) {
Entity en = w.spawnEntity(loc, entTy);
en.setCustomName(ChatColor.RED + "Experiment One " + ChatColor.DARK_GRAY + "> " + ChatColor.GREEN + level
+ ChatColor.DARK_GRAY + " <");
}
И тогда называли в onEnable() для тестирования:
summonMob(EntityType.ZOMBIE, 1, w, new Location(w, 238, 45, 1349));
«тест-моб» был вызван с 1-го уровня, я пытаюсь прочитать эту информацию в следующем случае:
@EventHandler
public void onEntityDeath(EntityDeathEvent e) {
if (e.getEntity().getKiller() instanceof Player) {
Player p = e.getEntity().getKiller();
if (e.getEntity().getCustomName() != null) {
int mobLevel = Integer
.parseInt(ChatColor.stripColor(e.getEntity().getCustomName().replaceAll("[^\\d.]", "")
.replaceAll("[^\\p{L}\\p{Nd}]+", "").replaceAll("\\s+", "")));
p.sendMessage("You've slain a Level " + mobLevel + " enemie!");
}
}
}
Проблема, хотя все не цифры удаляются из пользовательского имени, конечное число всегда добавляет два раза в «8», что делает 818 из 1, и 8208 из 20
I» вы, вероятно, пропустили что-то простое здесь, и было бы здорово, если бы кто-то мог мне помочь.
Спасибо! Поскольку мне еще не разрешено поднимать должности, мне пришлось выбрать решение Феррибига, поскольку оно было быстрее применено: 3 – AscendedKitten