1. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Решено PlaceholderAPI Math не работает у обычного игрока

Тема в разделе "Помощь", создана пользователем Teleran4ik, 30 мар 2025.

  1. Автор темы
    Teleran4ik

    Teleran4ik Участник

    Баллы:
    31
    Здравствуйте! Помогите пожалуйста!
    Я делаю магазин предметов через плагин DeluxMenus. И я решил сделать такую шнягу: что бы при покупке какого-то предмета, если не хватает денег, то тебе писало об этом, и также указывало, сколько именно не хватает. Сделал это через PlaceholderAPI Math: %math_3200-{vault_eco_balance}%.

    Проблема:
    Когда я играю за админа на сервере, данное сообщение выводиться как надо, а когда играю за простого смертного (игрока), то ничего не работает. В консоль выводится сообщение:
    [20:56:53 WARN]: [DeluxeMenus] Task #8639 for DeluxeMenus v1.14.0-Release generated an exception
    java.lang.NoSuchMethodError: 'boolean ch.andre601.mathexpansion.MathExpansion.getBoolean(java.lang.String, boolean)'
    at ch.andre601.mathexpansion.MathExpansion.printPlaceholderWarn(MathExpansion.java:169) ~[?:?]
    at ch.andre601.mathexpansion.MathExpansion.evaluateExpression(MathExpansion.java:114) ~[?:?]
    at ch.andre601.mathexpansion.MathExpansion.onRequest(MathExpansion.java:86) ~[?:?]
    at me.clip.placeholderapi.PlaceholderAPI.setPlaceholders(PlaceholderAPI.java:234) ~[PlaceholderAPI-2.10.3.jar:?]
    at me.clip.placeholderapi.PlaceholderAPI.setPlaceholders(PlaceholderAPI.java:202) ~[PlaceholderAPI-2.10.3.jar:?]
    at com.extendedclip.deluxemenus.action.ClickActionTask.run(ClickActionTask.java:49) ~[DeluxeMenus-1.14.0-Release (1).jar:?]
    at org.bukkit.craftbukkit.v1_18_R2.scheduler.CraftTask.run(CraftTask.java:101) ~[paper-1.18.2.jar:git-Paper-388]
    at org.bukkit.craftbukkit.v1_18_R2.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:483) ~[paper-1.18.2.jar:git-Paper-388]
    at net.minecraft.server.MinecraftServer.tickChildren(MinecraftServer.java:1532) ~[paper-1.18.2.jar:git-Paper-388]
    at net.minecraft.server.dedicated.DedicatedServer.tickChildren(DedicatedServer.java:483) ~[paper-1.18.2.jar:git-Paper-388]
    at net.minecraft.server.MinecraftServer.tickServer(MinecraftServer.java:1456) ~[paper-1.18.2.jar:git-Paper-388]
    at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1226) ~[paper-1.18.2.jar:git-Paper-388]
    at net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:316) ~[paper-1.18.2.jar:git-Paper-388]
    at java.lang.Thread.run(Thread.java:842) ~[?:?]

    Конфиг в Delux menus (точнее часть):
    'bread':
    material: bread
    hide_attributes: true
    item_flags:
    - HIDE_POTION_EFFECTS
    display_name: ' '
    slot: 3
    lore:
    - '&b «Хлеб»'
    - ' '
    - '&7 - ЛКМ: купить 1 за 100$'
    - '&7 - ПКМ: купить 32 за 3,200$'
    - ' '
    - '&7 - Ваш баланс: %vault_eco_balance%$ '
    - ' '
    right_click_requirement:
    requirements:
    money_check:
    type: has money
    amount: 3200
    deny_commands:
    - '[sound] ENTITY_PLAYER_BIG_FALL'
    - '[message]'
    - '[message]&b Акил Скан &f ╠ &b%player_name%&f, у тебя не хватает денег (&7%math_3200-{vault_eco_balance}%&f$)!'
    - '[message]'
    - '[close]'
    left_click_requirement:
    requirements:
    money_check:
    type: has money
    amount: 100
    deny_commands:
    - '[sound] ENTITY_PLAYER_BIG_FALL'
    - '[message]'
    - '[message]&b Акил Скан &f ╠ &b%player_name%&f, у тебя не хватает денег (&7%math_3200-{vault_eco_balance}%&f$)!'
    - '[message]'
    - '[close]'
    left_click_commands:
    - '[console] eco take %player_name% 100'
    - '[refresh] '
    - '[console] give %player_name% bread 1'
    - '[sound] BLOCK_NOTE_BLOCK_HAT'
    right_click_commands:
    - '[console] eco take %player_name% 3200'
    - '[refresh] '
    - '[console] give %player_name% bread 32'
    - '[sound] BLOCK_NOTE_BLOCK_HAT'

    Версия сервера: 1.18.2
    Спасибо за помощь!
     
    Последнее редактирование: 30 мар 2025
  2. FeniksDEV

    FeniksDEV Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    Feniksovich
    Что отдает /papi parse me для %math_3200-{vault_eco_balance}% и %vault_eco_balance% в обоих случаях? Полагаю, проблема в том, что математическое выражение в плейсхолдере просто не разбирается, попытка отобразить предупреждение вываливается в ошибку по второстепенной причине.
     
  3. Автор темы
    Teleran4ik

    Teleran4ik Участник

    Баллы:
    31
    Если ввести это играя за администратора сервера, то выводится ответ как надо. Далее я это ввёл от имени другова игрока (ну то есть papi parse <ник>), и в консоль это полетело:

    [07:06:28 INFO]: zeleran_222 issued server command: /papi parse zeleran_22 %math_3200-{vault_eco_balance}%
    [07:06:28 ERROR]: null
    org.bukkit.command.CommandException: Unhandled exception executing command 'papi' in plugin PlaceholderAPI v2.10.3
    at org.bukkit.command.PluginCommand.execute(PluginCommand.java:47) ~[paper-api-1.18.2-R0.1-SNAPSHOT.jar:?]
    at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:159) ~[paper-api-1.18.2-R0.1-SNAPSHOT.jar:?]
    at org.bukkit.craftbukkit.v1_18_R2.CraftServer.dispatchCommand(CraftServer.java:906) ~[paper-1.18.2.jar:git-Paper-388]
    at net.minecraft.server.network.ServerGamePacketListenerImpl.handleCommand(ServerGamePacketListenerImpl.java:2307) ~[?:?]
    at net.minecraft.server.network.ServerGamePacketListenerImpl.handleChat(ServerGamePacketListenerImpl.java:2118) ~[?:?]
    at net.minecraft.server.network.ServerGamePacketListenerImpl.handleChat(ServerGamePacketListenerImpl.java:2099) ~[?:?]
    at net.minecraft.network.protocol.game.ServerboundChatPacket.handle(ServerboundChatPacket.java:46) ~[?:?]
    at net.minecraft.network.protocol.game.ServerboundChatPacket.a(ServerboundChatPacket.java:6) ~[?:?]
    at net.minecraft.network.protocol.PacketUtils.lambda$ensureRunningOnSameThread$1(PacketUtils.java:51) ~[?:?]
    at net.minecraft.server.TickTask.run(TickTask.java:18) ~[paper-1.18.2.jar:git-Paper-388]
    at net.minecraft.util.thread.BlockableEventLoop.doRunTask(BlockableEventLoop.java:153) ~[?:?]
    at net.minecraft.util.thread.ReentrantBlockableEventLoop.doRunTask(ReentrantBlockableEventLoop.java:24) ~[?:?]
    at net.minecraft.server.MinecraftServer.doRunTask(MinecraftServer.java:1400) ~[paper-1.18.2.jar:git-Paper-388]
    at net.minecraft.server.MinecraftServer.d(MinecraftServer.java:188) ~[paper-1.18.2.jar:git-Paper-388]
    at net.minecraft.util.thread.BlockableEventLoop.pollTask(BlockableEventLoop.java:126) ~[?:?]
    at net.minecraft.server.MinecraftServer.pollTaskInternal(MinecraftServer.java:1377) ~[paper-1.18.2.jar:git-Paper-388]
    at net.minecraft.server.MinecraftServer.pollTask(MinecraftServer.java:1370) ~[paper-1.18.2.jar:git-Paper-388]
    at net.minecraft.util.thread.BlockableEventLoop.managedBlock(BlockableEventLoop.java:136) ~[?:?]
    at net.minecraft.server.MinecraftServer.waitUntilNextTick(MinecraftServer.java:1348) ~[paper-1.18.2.jar:git-Paper-388]
    at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1230) ~[paper-1.18.2.jar:git-Paper-388]
    at net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:316) ~[paper-1.18.2.jar:git-Paper-388]
    at java.lang.Thread.run(Thread.java:842) ~[?:?]
    Caused by: java.lang.NoSuchMethodError: 'boolean ch.andre601.mathexpansion.MathExpansion.getBoolean(java.lang.String, boolean)'
    at ch.andre601.mathexpansion.MathExpansion.printPlaceholderWarn(MathExpansion.java:169) ~[?:?]
    at ch.andre601.mathexpansion.MathExpansion.evaluateExpression(MathExpansion.java:114) ~[?:?]
    at ch.andre601.mathexpansion.MathExpansion.onRequest(MathExpansion.java:86) ~[?:?]
    at me.clip.placeholderapi.PlaceholderAPI.setPlaceholders(PlaceholderAPI.java:234) ~[PlaceholderAPI-2.10.3.jar:?]
    at me.clip.placeholderapi.PlaceholderAPI.setPlaceholders(PlaceholderAPI.java:202) ~[PlaceholderAPI-2.10.3.jar:?]
    at me.clip.placeholderapi.commands.PlaceholderAPICommands.onCommand(PlaceholderAPICommands.java:190) ~[PlaceholderAPI-2.10.3.jar:?]
    at org.bukkit.command.PluginCommand.execute(PluginCommand.java:45) ~[paper-api-1.18.2-R0.1-SNAPSHOT.jar:?]
    ... 21 more

    Также в чат написало: An internal error occurred while attempting to perform this command/При попытке выполнить эту команду произошла внутренняя ошибка

    Изначально я думал что это с пермишином связанно. Посмотрел в luckperms, но там ничего такого нет. Я выдал право на papi parse, и заработал только плейсхолдер на баланс, а с вычислениями нет
     
    Последнее редактирование: 31 мар 2025
  4. Автор темы
    Teleran4ik

    Teleran4ik Участник

    Баллы:
    31
    Только что решил обновить плагин, и что новое начало происходить. Теперь сообщение выводиться но без ответа. То есть как то так: Акил Скан &f ╠ &b%player_name%&f, у тебя не хватает денег (&7%math_3200-{vault_eco_balance}%&f$)

    В консоль это:
    [07:21:20 WARN]: [PlaceholderAPI] [math] Invalid Placeholder detected!
    [07:21:20 WARN]: [PlaceholderAPI] [math] Placeholder: %math_3200-{vault_eco_balance}%
    [07:21:20 WARN]: [PlaceholderAPI] [math] Cause: '3200-26,77' is not a valid Math expression.
     
  5. FeniksDEV

    FeniksDEV Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    Feniksovich
    Можно попробовать заменить плейсхолдер на %vault_eco_balance_fixed%.
     
  6. Автор темы
    Teleran4ik

    Teleran4ik Участник

    Баллы:
    31
    Спасибо большое! Помогло!
     
  7. Автор темы
    Teleran4ik

    Teleran4ik Участник

    Баллы:
    31
    Как тему закрыть? Нужно поставить статус темы "закрытый"? Сорян за тупость)
     

Поделиться этой страницей