Вопрос Подача запроса с Bukkit плагина на Forge мод

Версия Minecraft
1.12.X

GoldenSunsetMine

Пользователь
Сообщения
122
Решения
2
Возможно ли создать систему, в которой плагин Bukkit на серверной стороне будет посылать запрос игроку и мод, установленный у игрока будет обрабатывать этот запрос и выполнять определённое действие? И так же наоборот?

Если возможно, прошу помочь мне в этом вопросе.
 
Возможно ли создать систему, в которой плагин Bukkit на серверной стороне будет посылать запрос игроку и мод, установленный у игрока будет обрабатывать этот запрос и выполнять определённое действие? И так же наоборот?

Если возможно, прошу помочь мне в этом вопросе.
Да, возможно, все "модовые" пакеты инкапсулированы в ванильный пакет 'SPacketCustomPayload', где имя канала - соответствует зарегистрированному каналу
 
Да, возможно, все "модовые" пакеты инкапсулированы в ванильный пакет 'SPacketCustomPayload', где имя канала - соответствует зарегистрированному каналу

Вот я попытался сделать, в логах клиента ничего не пишет.

Java:
public class Plugin extends JavaPlugin implements Listener {

    @Override
    public void onEnable() {
        getServer().getPluginManager().registerEvents(this, this);
        this.getServer().getMessenger().registerOutgoingPluginChannel(this, "my:channel");
    }

    @EventHandler
    public void onJoin(PlayerJoinEvent event) {
        System.out.println(event.getPlayer().getName() + " JOIN");
        sendToClient(event.getPlayer(), "PLAYER_JOIN_EVENT");
    }

    public void sendToClient(Player player, String message) {
        player.sendPluginMessage(this, "my:channel", message.getBytes());
    }
}

Java:
    public static class ServerMessageHandler implements IMessageHandler<ServerMessage, IMessage> {
        @Override
        public IMessage onMessage(ServerMessage message, MessageContext ctx) {
            Minecraft.getMinecraft().addScheduledTask(() -> {
                System.out.println("Received from server: " + message.getData());
            });
            return null;
        }
    }

Java:
    public static final String CHANNEL = "my:channel";
    public static final SimpleNetworkWrapper NETWORK = NetworkRegistry.INSTANCE.newSimpleChannel(CHANNEL);

    @Mod.EventHandler
    public void preInit(FMLPreInitializationEvent event) {
        NETWORK.registerMessage(ServerMessageHandler.class, ServerMessage.class, 0, Side.CLIENT);
        NETWORK.registerMessage(ClientMessageHandler.class, ClientMessage.class, 1, Side.SERVER);
    }
 
Вот я попытался сделать, в логах клиента ничего не пишет.
offtop
Подключил отладчик и вперед

Я указал в теории как это работает, тк лично копался в коде и видел это - на практике не было в этом необходимости
 
А можешь скинуть ссылку на этот код
Копался в ванильном коде майна*
Смотри пакеты, использования SPacketCustomPayload (на разных версиях может различаться)
Можешь (как уже намекнули выше) покопаться в исходниках в тех плагинах/модах, где уже было сделано это (среди перечисленного выше все с открытыми исходниками)
 
Последнее редактирование:
Назад
Сверху Снизу