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

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

Discussion in 'Разработка плагинов для новичков' started by AlexMor, Dec 18, 2016.

Thread Status:
Not open for further replies.
  1. Автор темы
    AlexMor

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

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

    Code:
    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 Старожил Пользователь

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

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

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

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

    Trophy Points:
    66
    С этим разобрался, ты прав и он возвращает стринг, все работает на самом деле правильно )) закрываю тема, ложная тревога)
     
Thread Status:
Not open for further replies.

Share This Page