Помогите Не работает, хотя ошибок нет

Статус
Закрыто для дальнейших ответов.

Conorfish

Активный участник
Пользователь
Баллы
76
Смотрел туториал по "Отсчету перед мини игрой", так как вообще не понимал.
И вот не очень работает, а ошибок не Консоль не Эклипс не дает.
Что сделать чтобы, если игрок зайдет(PlayerJoinEvent), то в консоль спамит каждые 20тиков сообщение?
Мой не рабочий вариант ниже(Делал по туториалу)

(MainClass.java)Главный класс:
PHP:
package impostor.among.us;

import java.util.logging.Logger;

import org.bukkit.Bukkit;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.plugin.java.JavaPlugin;

public class MainClass extends JavaPlugin{

    Logger log = (Logger) getLogger();
    FileConfiguration cfg = getConfig();
 
    public void onEnable() {
        Bukkit.getPluginManager().registerEvents(new Listener(), this);
    }
 
    public void onDisable() {
    }
 
    public FileConfiguration getCfg() {
        return cfg;
    }
 
    public Logger getLog() {
        return log;
    }
}
(Listener.java)Евенты:
PHP:
package impostor.among.us;

import org.apache.logging.log4j.Logger;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.event.EventHandler;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.plugin.Plugin;
import org.bukkit.scheduler.BukkitRunnable;

public class Listener implements org.bukkit.event.Listener {
 
    /////////////////////////////
    Logger log = (Logger) new MainClass().getLog();
    FileConfiguration cfg = new MainClass().getCfg();
    int PlayersCount = 0;
    /////////////////////////////
 
    @EventHandler
    public void onPlayerJoin(PlayerJoinEvent e) {
        PlayersCount = PlayersCount + 1;
        Countdown();
    }
 
    public void Countdown() {
        BukkitRunnable runnable = new BukkitRunnable() {
         
            @Override
            public void run() {
                log.info("FFFFFFFFFFFFFFF");        
            }
        };
        runnable.runTaskTimer(new MainClass(), 1L, 20L);
    }
}
Если решу, буду настолько благодарен всем.
 
Последнее редактирование:
package impostor.among.us;

import java.util.logging.Logger;

import org.bukkit.Bukkit;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.plugin.java.JavaPlugin;

public class
MainClass extends JavaPlugin{

Logger log = (Logger) getLogger();
FileConfiguration cfg = getConfig();

public
void onEnable() {
Bukkit.getPluginManager().registerEvents(new Listener(), this);
}

public
void onDisable() {
}

public
FileConfiguration getCfg() {
return
cfg;
}

public
Logger getLog() {
return
log;
}
}

над методом onEnable должно быть @Override, как тут:

Код:
@Override
    public void onEnable() {#code}
 
А вот это можно передавать через конструктор при регистрации слушателя:

Код:
Logger log = (Logger) new MainClass().getLog();
    FileConfiguration cfg = new MainClass().getCfg();
Но это так, советы. Вот предыдущее возможно решит твою проблему
 
А вот это можно передавать через конструктор при регистрации слушателя:

Код:
Logger log = (Logger) new MainClass().getLog();
    FileConfiguration cfg = new MainClass().getCfg();
Но это так, советы. Вот предыдущее возможно решит твою проблему
Тоесть так?
PHP:
    public void Countdown() {
        Logger log = (Logger) new MainClass().getLog();
        BukkitRunnable runnable = new BukkitRunnable() {
            
            @Override
            public void run() {
                log.info("FFFFFFFFFFFFFFF");           
            }
        };
        runnable.runTaskTimer(new MainClass(), 1L, 20L);
    }
 
Сделай конструктор в классе

private MainClass plugin;
public Listener(MainClass plugin) {
this.plugin = plugin
}
 
Ошибка
The constructor Listener() is undefined
на строчку регистрации эвентов
Bukkit.getPluginManager().registerEvents(new Listener(), this);

PHP:
package impostor.among.us;

import org.apache.logging.log4j.Logger;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.event.EventHandler;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.plugin.Plugin;
import org.bukkit.scheduler.BukkitRunnable;

public class Listener implements org.bukkit.event.Listener {   
    
    private MainClass plugin;
    
    /////////////////////////////
    Logger log = (Logger) new MainClass().getLog();
    FileConfiguration cfg = new MainClass().getCfg();
    int PlayersCount = 0;
    /////////////////////////////
    
    public Listener(MainClass plugin) {
        this.plugin = plugin;
    }
    
    @EventHandler
    public void onPlayerJoin(PlayerJoinEvent e) {
        PlayersCount = PlayersCount + 1;
        Countdown();
    }
    
    
    
    public void Countdown() {
        BukkitRunnable runnable = new BukkitRunnable() {
            
            @Override
            public void run() {
                log.info("FFFFFFFFFFFFFFF");           
            }
        };
        runnable.runTaskTimer(new MainClass(), 1L, 20L);
    }
}
 
Ошибка
на строчку регистрации эвентов


PHP:
package impostor.among.us;

import org.apache.logging.log4j.Logger;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.event.EventHandler;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.plugin.Plugin;
import org.bukkit.scheduler.BukkitRunnable;

public class Listener implements org.bukkit.event.Listener {  
   
    private MainClass plugin;
   
    /////////////////////////////
    Logger log = (Logger) new MainClass().getLog();
    FileConfiguration cfg = new MainClass().getCfg();
    int PlayersCount = 0;
    /////////////////////////////
   
    public Listener(MainClass plugin) {
        this.plugin = plugin;
    }
   
    @EventHandler
    public void onPlayerJoin(PlayerJoinEvent e) {
        PlayersCount = PlayersCount + 1;
        Countdown();
    }
   
   
   
    public void Countdown() {
        BukkitRunnable runnable = new BukkitRunnable() {
           
            @Override
            public void run() {
                log.info("FFFFFFFFFFFFFFF");          
            }
        };
        runnable.runTaskTimer(new MainClass(), 1L, 20L);
    }
}

Там нужно передать в скобочках объекты конструктора
 
Если твой конструктор такой:
private MainClass plugin;
public Listener(MainClass plugin) {
this.plugin = plugin
}
То тогда это:
Bukkit.getPluginManager().registerEvents(new Listener(this), this);
точно
 
Это твой первый плагин?
Если да то ты хотя бы plugin.yml оформил?
 
Это твой первый плагин?
Если да то ты хотя бы plugin.yml оформил?
Не первый, plugin yml в первую очередь, я очень устал сегодня, да и все.
К тому же не привык понимать когда что-то говорят, мне по строчке легче понять что да как :/
Извини за тупость. И спасибо что терпишь меня
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх