Войти или зарегистрироваться

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

Teleran4ik

Активный участник
Баллы
61
Здравствуйте! Помогите пожалуйста!
Я делаю магазин предметов через плагин 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
Спасибо за помощь!
 
Последнее редактирование:
Что отдает /papi parse me для %math_3200-{vault_eco_balance}% и %vault_eco_balance% в обоих случаях? Полагаю, проблема в том, что математическое выражение в плейсхолдере просто не разбирается, попытка отобразить предупреждение вываливается в ошибку по второстепенной причине.
 
Что отдает /papi parse me для %math_3200-{vault_eco_balance}% и %vault_eco_balance% в обоих случаях? Полагаю, проблема в том, что математическое выражение в плейсхолдере просто не разбирается, попытка отобразить предупреждение вываливается в ошибку по второстепенной причине.

Если ввести это играя за администратора сервера, то выводится ответ как надо. Далее я это ввёл от имени другова игрока (ну то есть 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, и заработал только плейсхолдер на баланс, а с вычислениями нет
 
Последнее редактирование:
Что отдает /papi parse me для %math_3200-{vault_eco_balance}% и %vault_eco_balance% в обоих случаях? Полагаю, проблема в том, что математическое выражение в плейсхолдере просто не разбирается, попытка отобразить предупреждение вываливается в ошибку по второстепенной причине.

Только что решил обновить плагин, и что новое начало происходить. Теперь сообщение выводиться но без ответа. То есть как то так: Акил Скан &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.
 
Можно попробовать заменить плейсхолдер на %vault_eco_balance_fixed%.
 
Назад
Верх