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

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

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 в первую очередь, я очень устал сегодня, да и все.
К тому же не привык понимать когда что-то говорят, мне по строчке легче понять что да как :/
Извини за тупость. И спасибо что терпишь меня
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх