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

Помогите разработка плагина с Netty, создание АПИ, помогите

Тема в разделе "Разработка плагинов для новичков", создана пользователем Mukiroku, 24 мар 2018.

  1. hyndorik

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

    Баллы:
    98
    Имя в Minecraft:
    hyndo
    Ну тебе этого не достаточно, эт простой экзампл юза listenablefuture
     
  2. Автор темы
    Mukiroku

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

    Баллы:
    76
    Имя в Minecraft:
    Kukuroku
    ААААА у меня мозг скоро взорвётся, нечего не понятно. просто скажу, можешь свой текст на русский перевести.
     
  3. Автор темы
    Mukiroku

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

    Баллы:
    76
    Имя в Minecraft:
    Kukuroku
    Стой их с Java 9 идёт?
     
  4. Автор темы
    Mukiroku

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

    Баллы:
    76
    Имя в Minecraft:
    Kukuroku
    Так да?
    PHP:
    implements ListenableFuture<Boolean>
    Вот методы
    Код:
      [php]  public void addListener(Runnable runnable, Executor executor) {
    
        }
    
        public boolean cancel(boolean mayInterruptIfRunning) {
            return false;
        }
    
        public boolean isCancelled() {
            return false;
        }
    
        public boolean isDone() {
            return false;
        }
    
        public Boolean get() throws InterruptedException, ExecutionException {
            return null;
        }
    
        public Boolean get(long timeout, TimeUnit unit) throws InterruptedException, ExecutionException, TimeoutException {
            return null;[/php]
        }
    И что в методах писать?
     
  5. hyndorik

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

    Баллы:
    98
    Имя в Minecraft:
    hyndo
    Я тебе просто посоветовал удобный интерфейс, реализация протокола на твоей совести
     
  6. Автор темы
    Mukiroku

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

    Баллы:
    76
    Имя в Minecraft:
    Kukuroku
    И что в методах писать?
     
  7. hyndorik

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

    Баллы:
    98
    Имя в Minecraft:
    hyndo
    Я че знаю реализацию твоего протокола?
     
  8. Автор темы
    Mukiroku

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

    Баллы:
    76
    Имя в Minecraft:
    Kukuroku
    За что это методы отвечают?
     
  9. hyndorik

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

    Баллы:
    98
    Имя в Minecraft:
    hyndo
    Я тебе привел удобный интерфейс чтою юзать его, читай ява доки. Можешь свой интерфейс сделать
     
  10. Автор темы
    Mukiroku

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

    Баллы:
    76
    Имя в Minecraft:
    Kukuroku
    Ну вас класс, как можно реализовать, хотя бы на пальцах.
    PHP:
    public class ClientHandler extends ChannelInboundHandlerAdapter implements ListenableFuture<Economick>{
        private 
    ByteBuf buf;
        private static 
    HashMap<String,Economick> list;



        static 
    void loadMap(){
            list = new 
    HashMap<StringEconomick>();
            list.
    put("ttestf",new Economick("fd","fd",2,2,true"ADD"));
        }
        static 
    Economick getData(String name){


            if(list.
    containsKey(name)){
                
    Economick data = list.get(name);
                list.
    remove(name);
                return 
    data;
            }else{
                return 
    null;
            }
        }

        public static 
    void putEco(Economick e){
            list.
    put(e.getName(), e);
        }

        @
    Override
        
    public void handlerAdded(ChannelHandlerContext ctx) {
            
    buf ctx.alloc().buffer(4); // (1)
        
    }

        @
    Override
        
    public void handlerRemoved(ChannelHandlerContext ctx) {
            
    buf.release(); // (1)
            
    buf null;
        }


        @
    Override
        
    public void channelRead(ChannelHandlerContext ctxObject msg) {
            
    ByteBuf m = (ByteBufmsg;
            
    String  sm.toString(Charset.forName("UTF8"));
            for(
    String q s.split(" /$/ ")){
                
    String[] type q.split(" /%/ ");
               
    Load.getLoader(type[0]).event(type[1]);
            }

            
    buf.writeBytes(m); // (2)
            
    m.release();
        }

        @
    Override
        
    public void exceptionCaught(ChannelHandlerContext ctxThrowable cause) {
            
    cause.printStackTrace();
            
    ctx.close();
        }


        public 
    void addListener(Runnable runnableExecutor executor) {

        }

        public 
    boolean cancel(boolean mayInterruptIfRunning) {
            return 
    false;
        }

        public 
    boolean isCancelled() {
            return 
    false;
        }

        public 
    boolean isDone() {
            return 
    false;
        }

        public 
    Economick get() throws InterruptedExceptionExecutionException {
            return 
    null;
        }

        public 
    Economick get(long timeoutTimeUnit unitthrows InterruptedExceptionExecutionExceptionTimeoutException {
            return 
    null;
        }
    }
     
  11. Автор темы
    Mukiroku

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

    Баллы:
    76
    Имя в Minecraft:
    Kukuroku
    Кто-то ещё может подсказать?
     
  12. Автор темы
    Mukiroku

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

    Баллы:
    76
    Имя в Minecraft:
    Kukuroku
    Я просто уточнить.
    CompletableFuture наследует(или что типо) ListenableFuture?
    Можно попробовать использовать
    CompletableFuture?
     
  13. hyndorik

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

    Баллы:
    98
    Имя в Minecraft:
    hyndo
    ListenableFuture интерфейс от гуава, completablefuture от явы самой. По идеи с ListenableFuture тебе было бы легче работать для таких целей, но можешь и комплитэбл юзать
     
  14. Автор темы
    Mukiroku

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

    Баллы:
    76
    Имя в Minecraft:
    Kukuroku
    До меня не доходит как это сделать, что-бы главный поток не останавливался , Всё что я могу придумать это цикл пока результат не появится.
     
  15. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    А в чем суть то? Может тебе подойдет майновский упрощенный протокол из моего core?
     
  16. Автор темы
    Mukiroku

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

    Баллы:
    76
    Имя в Minecraft:
    Kukuroku
    А на чём он?
     
  17. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    netty
     
  18. Автор темы
    Mukiroku

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

    Баллы:
    76
    Имя в Minecraft:
    Kukuroku
    Просто спрошу, не хочу в коде копаться, что твой плагин может, или это API, то что api может?
     
  19. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Гуишка с серверами готовая есть, в качестве примера. Сервера разделяются через мотд.
    В целом это готовый сокет сервер-клиент.
     
    Последнее редактирование: 6 апр 2018
  20. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Добавить еще логику будет просто, основа есть.
     

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