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

как вынести scoreboard в отдельный класс?

artem2015

Участник
Баллы
33
Имя в Minecraft
admin
если пишу так:


Код:
package test;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerMoveEvent;
import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.scoreboard.DisplaySlot;
import org.bukkit.scoreboard.Objective;
import org.bukkit.scoreboard.Scoreboard;
import org.bukkit.scoreboard.Team;
 
 
public class main extends JavaPlugin implements Listener{
 
    Scoreboard sb;
    Objective obj;
    Team team;
 
    public ScoreB score;
 
    public  void onEnable() {
        Bukkit.getPluginManager().registerEvents(this, this); // register plugin on server
        //score.init();
        sb= Bukkit.getScoreboardManager().getNewScoreboard();
        obj=sb.registerNewObjective("SCORE", "admin");
        obj.setDisplaySlot(DisplaySlot.SIDEBAR);
        obj.setDisplayName("allscores");
        team=sb.registerNewTeam("myteam");
        team.setCanSeeFriendlyInvisibles(true);
        team.setAllowFriendlyFire(false);
    }
 
 
 
    @EventHandler
    public void onPlayerMove(PlayerMoveEvent event) throws Exception
    {
        //score.Setscore();
        for (Player p : Bukkit.getOnlinePlayers()){
            org.bukkit.scoreboard.Score s = obj.getScore(p);
            s.setScore(555);
            p.setScoreboard(sb);
            }
   
        return;
    }
 
}

то работает

если пытаюсь вынести scoreboard в отдельный класс:

Код:
package test;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.scoreboard.DisplaySlot;
import org.bukkit.scoreboard.Objective;
import org.bukkit.scoreboard.Scoreboard;
import org.bukkit.scoreboard.Team;
 
 
public class ScoreB {
    Scoreboard sb;
    Objective obj;
    Team team;
 
    public void init() {
    sb= Bukkit.getScoreboardManager().getNewScoreboard();
    obj=sb.registerNewObjective("SCORE", "admin");
    obj.setDisplaySlot(DisplaySlot.SIDEBAR);
    obj.setDisplayName("allscores");
    team=sb.registerNewTeam("myteam");
    team.setCanSeeFriendlyInvisibles(true);
    team.setAllowFriendlyFire(false);
    }
 
    public void Setscore() {
 
    for (Player p : Bukkit.getOnlinePlayers()){
    org.bukkit.scoreboard.Score s = obj.getScore(p);
    s.setScore(555);
    p.setScoreboard(sb);
    }
    }
}


и вызывать его из главного:


Код:
package test;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerMoveEvent;
import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.scoreboard.Objective;
import org.bukkit.scoreboard.Scoreboard;
import org.bukkit.scoreboard.Team;
 
 
public class main extends JavaPlugin implements Listener{
 
    Scoreboard sb;
    Objective obj;
    Team team;
 
    public ScoreB score;
 
    public  void onEnable() {
        Bukkit.getPluginManager().registerEvents(this, this); // register plugin on server
        score.init();
    }
 
 
 
    @EventHandler
    public void onPlayerMove(PlayerMoveEvent event) throws Exception
    {
        score.Setscore();
        return;
    }
 
}

то при инициализации плугина в строке score.init();
выдаёт ошибку:
[test5] Enabling test5 v1.0
2013-09-22 13:19:04 [SEVERE] Error occurred while enabling test5 v1.0 (Is it up to date?)
java.lang.NullPointerException
at test.main.onEnable(main.java:23)
at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:217)
at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:457)
at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:382)
at org.bukkit.craftbukkit.v1_6_R2.CraftServer.loadPlugin(CraftServer.java:286)
at org.bukkit.craftbukkit.v1_6_R2.CraftServer.enablePlugins(CraftServer.java:268)
at net.minecraft.server.v1_6_R2.MinecraftServer.l(MinecraftServer.java:319)
at net.minecraft.server.v1_6_R2.MinecraftServer.f(MinecraftServer.java:296)
at net.minecraft.server.v1_6_R2.MinecraftServer.a(MinecraftServer.java:256)
at net.minecraft.server.v1_6_R2.DedicatedServer.init(DedicatedServer.java:164)
at net.minecraft.server.v1_6_R2.MinecraftServer.run(MinecraftServer.java:397)
at net.minecraft.server.v1_6_R2.ThreadServerApplication.run(SourceFile:582)

и далее в другой строке score.Setscore(); другую ошибку:

Could not pass event PlayerMoveEvent to test5 v1.0
org.bukkit.event.EventException
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:427)
at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62)
at org.bukkit.plugin.TimedRegisteredListener.callEvent(TimedRegisteredListener.java:30)
at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:478)
at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:463)
at net.minecraft.server.v1_6_R2.PlayerConnection.a(PlayerConnection.java:229)
at net.minecraft.server.v1_6_R2.Packet10Flying.handle(SourceFile:136)
at net.minecraft.server.v1_6_R2.NetworkManager.b(NetworkManager.java:296)
at net.minecraft.server.v1_6_R2.PlayerConnection.e(PlayerConnection.java:118)
at net.minecraft.server.v1_6_R2.ServerConnection.b(SourceFile:37)
at net.minecraft.server.v1_6_R2.DedicatedServerConnection.b(SourceFile:30)
at net.minecraft.server.v1_6_R2.MinecraftServer.t(MinecraftServer.java:592)
at net.minecraft.server.v1_6_R2.DedicatedServer.t(DedicatedServer.java:239)
at net.minecraft.server.v1_6_R2.MinecraftServer.s(MinecraftServer.java:481)
at net.minecraft.server.v1_6_R2.MinecraftServer.run(MinecraftServer.java:413)
at net.minecraft.server.v1_6_R2.ThreadServerApplication.run(SourceFile:582)
Caused by: java.lang.NullPointerException
at test.main.onPlayerMove(main.java:39)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:425)
 
Назад
Верх