Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.

Плагин [FIX]ItemFixer 3.1-Избавь свой сервер от читерских предметов!|Фикс DLC,WURST,SKILL|Upd 18.02.2018

Статус
Закрыто для дальнейших ответов.
А какая разница между this.msgToCS и просто msgToCS? или this.checkForUpdate() и checkForUpdate()?
Никакой. Просто IDE мне после this. показывает все возможные методы/поля для этого класса. Да и выглядит красивее.
 
Никакой. Просто IDE мне после this. показывает все возможные методы/поля для этого класса.
Понял
А не знаешь как можно сделать так чтобы плагин запустился на 1.5.2, если его компилируешь ядром 1.10?
Просто хочу сделать так чтобы плагин робил и на 1.5.2+, но и с новыми возможностями 1.9-1.10. А то когда пытаюсь запустить плагин на 1.5.2 выскакивает NoSuchMethodError. Тех методов что нет на 1.5.2, я не использую. Тоесть есть проверка какая версия, типо такая.
if (version19) {
....
} else {
...
}
Когда подключаю ядро 1.5.2, и отключаю 1.10, то ту строчу, которая в ошибке не подчеркивается.
(Я не про этот плагин)
 
А ровным счетом тоже самое. this это ссылка на класс где код пишем.
Я в курсе.
Вообще я бы мог спокойно кинуть ссылочку в гугл или какие ниб рандом ссылочки, но не стал, потому что [...] фу [...].
UPD: Если хотел дополнить ответ, то цитируй и вопрос помимо первого ответа.
Понял
А не знаешь как можно сделать так чтобы плагин запустился на 1.5.2, если его компилируешь ядром 1.10?
Просто хочу сделать так чтобы плагин робил и на 1.5.2+, но и с новыми возможностями 1.9-1.10. А то когда пытаюсь запустить плагин на 1.5.2 выскакивает NoSuchMethodError. Тех методов что нет на 1.5.2, я не использую. Тоесть есть проверка какая версия, типо такая.
if (version19) {
....
} else {
...
}
Когда подключаю ядро 1.5.2, и отключаю 1.10, то ту строчу, которая в ошибке не подчеркивается.
(Я не про этот плагин)
Можно, используя методы, которые не менялись с 1.5.2. Правда, лучше на время писания реализации под 1.5.2 убрать из библиотек 1.10 - кто его знает, что выйдет.
 
Я в курсе.
Вообще я бы мог спокойно кинуть ссылочку в гугл или какие ниб рандом ссылочки, но не стал, потому что [...] фу [...].
UPD: Если хотел дополнить ответ, то цитируй и вопрос помимо первого ответа.
Можно, используя методы, которые не менялись с 1.5.2. Правда, лучше на время писания реализации под 1.5.2 убрать из библиотек 1.10 - кто его знает, что выйдет.
Пишу за деньги на 1.7.10. Косяк реализации, который нашел - ItemFlag в API есть, а в реализации нет.
 
Можно, используя методы, которые не менялись с 1.5.2. Правда, лучше на время писания реализации под 1.5.2 убрать из библиотек 1.10 - кто его знает, что выйдет.
Я делаю типо проверки на креат, флай, год и тд. Тоесть в 1.5.2-1.8 можно чекать токо взрывное зелье и стрелу. А дальше появилась ещё одна стрела и зелье. И как их чекать я хз чтобы была поддержка старых версий.
 
Я делаю типо проверки на креат, флай, год и тд. Тоесть в 1.5.2-1.8 можно чекать токо взрывное зелье и стрелу. А дальше появилась ещё одна стрела и зелье. И как их чекать я хз чтобы была поддержка старых версий.
Абстрактным методом например, переключать его по нужному условию.
 
Я делаю типо проверки на креат, флай, год и тд. Тоесть в 1.5.2-1.8 можно чекать токо взрывное зелье и стрелу. А дальше появилась ещё одна стрела и зелье. И как их чекать я хз чтобы была поддержка старых версий.
1. Топорный метод - запихнуть код в try-catch
2. Обычный метод - определяем версию и запускаем новый код в блоке if(сервер_версия>версия)
 
2. Обычный метод - определяем версию и запускаем новый код в блоке if(сервер_версия>версия)
Ну у меня есть такое.

Java:
    HashMap<String, Boolean> bol = new HashMap<String, Boolean>();
    //Использую мапу, т.к у меня ~10 boolean значений которые не меняются после запуска сервера. И чтобы не загрязнять класс.
        String version = this.getServer().getClass().getPackage().getName().replace(".",  ",").split(",")[3];
        if (version.equals("v1_10_R1") || version.equals("v1_9_R2") || version.equals("v1_9_R1")) {
            bol.put("use19", true);
        } else {
            bol.put("use19", false);
        }
---
    @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true)
    public void onLaunch(ProjectileLaunchEvent e){
        if (e.getEntity().getShooter() instanceof Player) { // Ругается на эту строку. Если подключить ядро 1.5.2 без 1.10, то строку не подчеркивает.
            Player player = (Player) e.getEntity().getShooter();
            if (!player.hasPermission("antirelog.bypass")) {
                if (bol.get("use19")) {
                    if (e.getEntity().getType() == EntityType.TIPPED_ARROW || e.getEntity().getType() == EntityType.ARROW || e.getEntity().getType() == EntityType.LINGERING_POTION || e.getEntity().getType() == EntityType.SPLASH_POTION ){
                        if (checkPlayer(player)) e.setCancelled(true);
                    }
                } else {
                    if (e.getEntity().getType() == EntityType.ARROW || e.getEntity().getType() == EntityType.SPLASH_POTION ){
                        if (checkPlayer(player)) e.setCancelled(true);
                    }
                }
            }
        }
    }
 
1. Топорный метод - запихнуть код в try-catch
2. Обычный метод - определяем версию и запускаем новый код в блоке if(сервер_версия>версия)
Смотря как применить. если по класс фор нейм, то не такой и топорный, хотя бы не нунжо все версии чекать.
Ну у меня есть такое.

Java:
    HashMap<String, Boolean> bol = new HashMap<String, Boolean>();
    //Использую мапу, т.к у меня ~10 boolean значений которые не меняются после запуска сервера. И чтобы не загрязнять класс.
        String version = this.getServer().getClass().getPackage().getName().replace(".",  ",").split(",")[3];
        if (version.equals("v1_10_R1") || version.equals("v1_9_R2") || version.equals("v1_9_R1")) {
            bol.put("use19", true);
        } else {
            bol.put("use19", false);
        }
---
    @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true)
    public void onLaunch(ProjectileLaunchEvent e){
        if (e.getEntity().getShooter() instanceof Player) { // Ругается на эту строку. Если подключить ядро 1.5.2 без 1.10, то строку не подчеркивает.
            Player player = (Player) e.getEntity().getShooter();
            if (!player.hasPermission("antirelog.bypass")) {
                if (bol.get("use19")) {
                    if (e.getEntity().getType() == EntityType.TIPPED_ARROW || e.getEntity().getType() == EntityType.ARROW || e.getEntity().getType() == EntityType.LINGERING_POTION || e.getEntity().getType() == EntityType.SPLASH_POTION ){
                        if (checkPlayer(player)) e.setCancelled(true);
                    }
                } else {
                    if (e.getEntity().getType() == EntityType.ARROW || e.getEntity().getType() == EntityType.SPLASH_POTION ){
                        if (checkPlayer(player)) e.setCancelled(true);
                    }
                }
            }
        }
    }
Эх, не напоминал бы о своем быдлокеде, одного раза хватило.
 
Ну я же NMS не юзаю. То что выше это совсем другой плагин. У всех когдато был быдлокод.
Причем тут нмс? Если есть хоть 1 новый класс в версии выше, почему бы не дернуть класфорнейм?
Да и потом, я уже заменил на рефлексию это дело.
 
Причем тут нмс? Если есть хоть 1 новый класс в версии выше, почему бы не дернуть класфорнейм?
Тоесть чтоли юзать апи 1.5.2 и для новых версий использовать класфорнейм?
 
Какой же ты тупой.
Ну что поделаешь( Эстонец ведь я. И я всёравно не врубился как сделать то, чтобы плагин работал на 1.5.2, когда компилишь ядром 1.10, чтобы были новые возможности из 1.9-1.10.
 
Ну что поделаешь( Эстонец ведь я. И я всёравно не врубился как сделать то, чтобы плагин работал на 1.5.2, когда компилишь ядром 1.10, чтобы были новые возможности из 1.9-1.10.
Java:
       Object CheckClass(Object o) {
            try {
                Class.forName("ЧТО ТО ТАМ1");
                return this.news.Functions(o);
            } catch (ClassNotFoundException e1) {
                try {
                Class.forName("ЧТО ТО ТАМ2");
                return this.old.Functions(o);
                } catch (ClassNotFoundException e2) {
                    return this.dinozavr.Functions(o);
                }
            }
        }

Как то так.
 
Java:
       Object CheckClass(Object o) {
            try {
                Class.forName("ЧТО ТО ТАМ1");
                return this.news.Functions(o);
            } catch (ClassNotFoundException e1) {
                try {
                Class.forName("ЧТО ТО ТАМ2");
                return this.old.Functions(o);
                } catch (ClassNotFoundException e2) {
                    return this.dinozavr.Functions(o);
                }
            }
        }

Как то так.
А компилировать с API 1.8.1 beta? Или 1.7.2? Я хочу дюпа с поршнями!
 
А компилировать с API 1.8.1 beta? Или 1.7.2? Я хочу дюпа с поршнями!
Основной код на свежаке можно, а классы под версии отдельно, так все делают.
Ну тут все зависит от того, остался ли депрекадед код в новом апи или нет.
 
Статус
Закрыто для дальнейших ответов.

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

Назад
Верх