#minecraft #bukkit
#Minecraft #bukkit
Вопрос:
Я хочу создать плагин для защиты от взлома, который должен позволять клиенту писать «.msg Test». Таким образом, он напечатал бы «Test» и без hackclient «.msg Test» (ikr, не со всеми hackclients, но со многими).
Для этого клиент должен написать сообщение самостоятельно. Это можно сделать, отправив игроку сообщение и разрешив клиенту отправлять это сообщение «.msg» при нажатии на текст.
Но есть ли способ сделать это без участия игрока?
Комментарии:
1. То, что вы пытаетесь сделать, к сожалению, невозможно. Однако вы можете разрешить игрокам отправлять сообщения чата через сервер, используя
player.chat(String str);
метод.
Ответ №1:
Это возможно, мой друг 😃
Люди, как правило, упускают полезность метода
myPlayer.chat();
Метод заставляет игрока добавлять что-либо в чат, а поскольку и чат, и команды проходят через один и тот же поток, вы можете просто изменить сообщение чата на команду, добавив префикс ‘/’
myPlayer.chat("/msg test");
Заставит игрока выполнить команду ‘msg’ с аргументами ‘test’.
Ответ №2:
К сожалению, это невозможно через bukkit-api. Самое близкое к этому, что вы можете сделать, это использовать Server#dispatchCommand, но команда будет выполнена только в том случае, если она зарегистрирована на стороне сервера. https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Server.html#dispatchCommand(org.bukkit.command.CommandSender, java.lang.Строка)
Однако, если вы готовы использовать код NMS (net.minecraft.server), то
CommandBlockListenerAbstract.executeCommand(ICommandListener sender, org.bukkit.command.CommandSender bSender, String command)
должно сработать, поскольку это то, что я видел, реализация была для командных знаков на сервере spigot 1.8.8 (TileEntitySign.java строка:181).
Комментарии:
1. Это действительно возможно, как указано в другом ответе.
2. @Kerooker немного новичок в StackOverflow. Должен ли я тогда просто удалить свой ответ или отредактировать то, что я сказал?
3. я не уверен. вы должны спросить об этом в meta, но я думаю, что все в порядке