Помогите Получение числа из лора

Статус
Закрыто для дальнейших ответов.

sasha2003

Активный участник
Пользователь
Баллы
76
Есть предмет с лором в котором есть некоторое число.
Как получить это число?
 
Дикий костыль если ты хочешь это юзать для того чтобы узнать на какую сумму чек
 
Этот кастомный предмет является частью какого-то плагина? Если да, может у плагина есть API ?
 
Как-то так мб
Java:
public int getAmount(ItemStack is){
    String lore = is.getItemMeta().getLore().get(0);
    int amount=Integer.parseInt(lore.replaceAll("\\D*",""));
    return amount;
}
 
UP
Как сделать тоже самое, только с double (точку должно определять)?
Как-то так мб
Java:
public int getAmount(ItemStack is){
    String lore = is.getItemMeta().getLore().get(0);
    int amount=Integer.parseInt(lore.replaceAll("\\D*",""));
    return amount;
}
 
UP
Как сделать тоже самое, только с double (точку должно определять)?
Вроде этого
Код:
public double getAmount(ItemStack is){
    String lore = is.getItemMeta().getLore().get(0);
    double amount=Double.parseDouble(lore.replaceAll("(\\D*)(\\d+(\\.\\d+)?)(\\D*)","$2"));
    return amount;
}
Но как и с прошлым вариантом - стоит опасаться, если в строке описания есть другие числа.
Можно использовать и "77.8", и "51.0", и просто "51"
 
У меня появилась возможность сделать без знака $.
Сделал так - ничего не работает
Код:
String lore = p.getInventory().getItemInMainHand().getItemMeta().getLore().get(0);
            double amount = Double.parseDouble(lore);

ошибка:
Код:
[19:11:50] [Server thread/ERROR]: Could not pass event PlayerInteractEvent to Prison v1.0
org.bukkit.event.EventException
    at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:306) ~[spigot-1.11-R0.1-SNAPSHOT-latest.jar:git-Spigot-16c940b-0805f60]
    at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[spigot-1.11-R0.1-SNAPSHOT-latest.jar:git-Spigot-16c940b-0805f60]
    at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:502) [spigot-1.11-R0.1-SNAPSHOT-latest.jar:git-Spigot-16c940b-0805f60]
    at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:487) [spigot-1.11-R0.1-SNAPSHOT-latest.jar:git-Spigot-16c940b-0805f60]
    at org.bukkit.craftbukkit.v1_11_R1.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:231) [spigot-1.11-R0.1-SNAPSHOT-latest.jar:git-Spigot-16c940b-0805f60]
    at org.bukkit.craftbukkit.v1_11_R1.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:198) [spigot-1.11-R0.1-SNAPSHOT-latest.jar:git-Spigot-16c940b-0805f60]
    at org.bukkit.craftbukkit.v1_11_R1.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:194) [spigot-1.11-R0.1-SNAPSHOT-latest.jar:git-Spigot-16c940b-0805f60]
    at net.minecraft.server.v1_11_R1.PlayerConnection.a(PlayerConnection.java:935) [spigot-1.11-R0.1-SNAPSHOT-latest.jar:git-Spigot-16c940b-0805f60]
    at net.minecraft.server.v1_11_R1.PacketPlayInBlockPlace.a(PacketPlayInBlockPlace.java:26) [spigot-1.11-R0.1-SNAPSHOT-latest.jar:git-Spigot-16c940b-0805f60]
    at net.minecraft.server.v1_11_R1.PacketPlayInBlockPlace.a(PacketPlayInBlockPlace.java:1) [spigot-1.11-R0.1-SNAPSHOT-latest.jar:git-Spigot-16c940b-0805f60]
    at net.minecraft.server.v1_11_R1.PlayerConnectionUtils$1.run(SourceFile:13) [spigot-1.11-R0.1-SNAPSHOT-latest.jar:git-Spigot-16c940b-0805f60]
    at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [?:1.8.0_161]
    at java.util.concurrent.FutureTask.run(Unknown Source) [?:1.8.0_161]
    at net.minecraft.server.v1_11_R1.SystemUtils.a(SourceFile:46) [spigot-1.11-R0.1-SNAPSHOT-latest.jar:git-Spigot-16c940b-0805f60]
    at net.minecraft.server.v1_11_R1.MinecraftServer.D(MinecraftServer.java:739) [spigot-1.11-R0.1-SNAPSHOT-latest.jar:git-Spigot-16c940b-0805f60]
    at net.minecraft.server.v1_11_R1.DedicatedServer.D(DedicatedServer.java:399) [spigot-1.11-R0.1-SNAPSHOT-latest.jar:git-Spigot-16c940b-0805f60]
    at net.minecraft.server.v1_11_R1.MinecraftServer.C(MinecraftServer.java:675) [spigot-1.11-R0.1-SNAPSHOT-latest.jar:git-Spigot-16c940b-0805f60]
    at net.minecraft.server.v1_11_R1.MinecraftServer.run(MinecraftServer.java:574) [spigot-1.11-R0.1-SNAPSHOT-latest.jar:git-Spigot-16c940b-0805f60]
    at java.lang.Thread.run(Unknown Source) [?:1.8.0_161]
Caused by: java.lang.NumberFormatException: For input string: "§071.7"
    at sun.misc.FloatingDecimal.readJavaFormatString(Unknown Source) ~[?:1.8.0_161]
    at sun.misc.FloatingDecimal.parseDouble(Unknown Source) ~[?:1.8.0_161]
    at java.lang.Double.parseDouble(Unknown Source) ~[?:1.8.0_161]
    at ru.taselix.taselixapi.Events.onInteract(Events.java:382) ~[?:?]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_161]
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_161]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_161]
    at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_161]
    at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:302) ~[spigot-1.11-R0.1-SNAPSHOT-latest.jar:git-Spigot-16c940b-0805f60]
    ... 18 more
 
Выше

Вроде этого
Код:
public double getAmount(ItemStack is){
    String lore = is.getItemMeta().getLore().get(0);
    double amount=Double.parseDouble(lore.replaceAll("(\\D*)(\\d+(\\.\\d+)?)(\\D*)","$2"));
    return amount;
}
Но как и с прошлым вариантом - стоит опасаться, если в строке описания есть другие числа.
Можно использовать и "77.8", и "51.0", и просто "51"
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх