Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление

Помогите Ну очень большой вопрос.

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

Статус темы:
Закрыта.
  1. Автор темы
    AlexMor

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

    Баллы:
    66
    И еще раз здравствуйте для тех кому я возможно уже надоел :3
    У меня как у продвинутого бревна в сфере Java вопрос...
    Но начну с истории: Я модернизирую плагин WorldClaim под свой сервак, решил заменить стандартное распледеление кол-во чанков (а именно оно в плагине одно вля всех групп) на свое более гибкое, которое бы распределяло максимум чанков само по группам, и возникла проблема, не могу вытащить имя группы в виде String вот попытки:
    Код:
        String[] group = PermissionsEx.getUser(p).getGroupNames();
    
    но eclipse почему-то зачеркивает "getGroupNames()" и не хочет узнавать имена групп в которые входит игрок
    Проблема номер два, и опять с предистории: опять меня что-то не устроило в WorldClaim и я решил добавить налог за каждый заприваченный чанк и цену за него вывести в конфиг таким образом "tax<GroupName>" например "taxdefault" и чтоб он начинал считать налог когда игрок заходит на сервер, вот и код:
    Vars - класс с переменными и всякими подсчетами (например подсчет заприваченных чанков игроком)

    Код:
    public class TaxClass implements Listener{
       public long dolg;
       public long minutes;
       public long hours;
       
       
       
       //Игрок заходит - начинается отсчет налога
       @EventHandler (priority = EventPriority.HIGHEST)
       public void joinPlayer (PlayerJoinEvent pj){
         Player pl = pj.getPlayer();
         taxMetod(pl);
       }
       
       
       public void taxMetod (Player p){
         long currentTime = new Date().getTime();
         long TimeRate = Vars.config.getLong("TimeRate");
         if(Vars.taxRate.containsKey(p)){
           long lastUse = Vars.taxRate.get(p);
           if ((currentTime - lastUse) > TimeRate){
             String falseMessage = Vars.config.getString("falseMessage");
               String trueMessage = Vars.config.getString("trueMessage");
               long currentMoney = (long) Vars.eco.getBalance(p);
               long ch = HelperMethods.calculateChunks(p);
               @SuppressWarnings("deprecation")
               String[] group = PermissionsEx.getUser(p).getGroupNames();
               String taxperchunk = (String) "tax"+group[0] ;
               long credit;
               credit = (long) ( ch * Vars.config.getLong(taxperchunk));
               dolg += credit;
               long currentTimeNew = new Date().getTime();
               Vars.taxRate.put(p, currentTimeNew);
               if(currentMoney < dolg){
                 long ost = (long) Vars.eco.getBalance(p);
                 dolg -= ost;
                 Vars.eco.withdrawPlayer(p, ost);
                 p.sendMessage(falseMessage);
                 p.sendMessage("Все деньги с вашего счета сняты на погашение долга по налогам!");
                 p.sendMessage("Снято : "+ost+" Dollars  Долг : "+dolg+" Dollars");
               } else {
                 p.sendMessage(trueMessage);
                 int timehour = 0;
                 int timeminute = (int) ((TimeRate / 1000) /60 );
                 if (timeminute > 60){
                   do
                   {
                     timeminute -= 60;
                     timehour++;
                   }
                   while (timeminute >= 60);
                 }
                 long ost = currentMoney - dolg;
                 p.sendMessage("Оплаченная сумма: "+ dolg + "Dollars  На счету осталось: "+ost+" Dollars");
                 p.sendMessage("Следуйщая авто-оплата через "+timehour+"часов и "+timeminute+"минут.");
                 Vars.eco.withdrawPlayer(p, dolg);
               }
             }
             
               
           } else {
             currentTime = new Date().getTime();
             Vars.taxRate.put(p, currentTime);
           }
         long lastUse = Vars.taxRate.get(p);
         this.hours = 0;
         this.minutes = (long) (((currentTime - lastUse) / 1000) /60 );
         if (minutes > 60){
           do
           {
             minutes -= 60;
             hours++;
           }
           while (minutes >= 60);
         }
       }
    
    но этот умный exlipse ругается на строку "String[] group = PermissionsEx.getUser(p).getGroupNames();"зачеркивая "getGroupNames()"

    И наконец последний вопрос, как сделать так чтоб метод "TaxMetod" из класса "TaxClass" вызывался допустим каждые 10 минут , использую переменную "p" как игрока.

    В интернете икал и все 4-ое издание перерыл не нашел, возможно плохо искал, но все же прошу помощи у вас)))
     
  2. Хостинг MineCraft
    <
  3. Mr_RoboMan

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

    Баллы:
    123
    Насчет вопроса не знаю, но по коду скажу что вместо этого:
    long currentTime = new Date().getTime();
    Лучше использовать это:
    long current = System.currentTimeMillis() //Точно не помню :D
     
  4. Lignium

    Lignium Участник Пользователь

    Баллы:
    31
    Имя в Minecraft:
    Lignium
    Зачеркнутый метод, значит он deprecated, то есть устарел и его скоро могут выпилить. Нужны они для сохранения совместимости. Он точно возвращает String[]? Посмотри на возвращаемый тип, может там Set<String>. Точно помочь не могу, не могу найти доки от PEX.
     
    Последнее редактирование: 18 дек 2016
  5. Автор темы
    AlexMor

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

    Баллы:
    66
    С этим разобрался, ты прав и он возвращает стринг, все работает на самом деле правильно )) закрываю тема, ложная тревога)
     
Статус темы:
Закрыта.

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