player.getServer().getCommands().performPrefixedCommand(player.createCommandSourceStack(), "/say hello");
player.getServer().getPlayerList().broadcastChatMessage(PlayerChatMessage.unsigned(player.getUUID(),
"Some Message"), player, ChatType.bind(ChatType.CHAT, player));
player.getServer().getPlayerManager().broadcast(SignedMessage.ofUnsigned(player.getUuid(), "Some Text"), player, MessageType.params(MessageType.CHAT, player));
player.getServer().getCommandManager().executeWithPrefix(player.getCommandSource(),"/say hello");
player.getServer().getCommandManager().executeWithPrefix(player.getCommandSource().withLevel(4),"/say hello");
Если на 1.19 кардинально не переделали эту часть, то там при вызове команды от имени сервера указывается сервер в качестве отправителя команды. В этот аргумент просто игрока подставляй.узнал только как отправить от самого сервера,
скинь этокак отправить от самого сервера
Решение для 1.12 (на версиях выше полагаю код будет эквивалентным)Хм.. странно, отображает как отправка от сервера, у меня только такой вариант, если есть возможность покажи как сделать для сервера и как отправлять команды как команды а не как сообщение
MinecraftServer server = ...
Entity exucator = ... //или любой другой обьект который implements ICommandSender
server.getCommandManager().executeCommand(exucator, "raw-command-line");
@Inject(at = @At("HEAD"), method = "onUse")
public void onUse1(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockHitResult hit, CallbackInfoReturnable<ActionResult> cir) {
String str = "say test";
MinecraftServer server = player.getServer();
Entity exucator = MinecraftClient.getInstance().player;
server.execute(exucator, str);
}
}
Игрок клиентский. Все взаимодействия сервера происходят с серверными сущностями. Иначе говоря, используй игрока, который дан тебе в аргументах.Entity exucator = MinecraftClient.getInstance().player;
Это на Fabric? У меня по какой то причине не работаетА вообще если тебе нужно транслировать сообщение от имени игрока то вот:
Java:player.getServer().getPlayerList().broadcastChatMessage(PlayerChatMessage.unsigned(player.getUUID(), "Some Message"), player, ChatType.bind(ChatType.CHAT, player));
Для 1.19
getCommands
Java:player.getServer().getCommands().performPrefixedCommand(player.createCommandSourceStack(), "/say hello");
UPD: комманда say требует permissionLevel 2 так что если у игрока нету этого разрешения то она не выполнится. Или можно создать кастомный соурс стек и указать там нужный уровень вручную