by Reiga » 2020年7月06日(月) 19:37
私が運営するRPGサーバーにて使用する予定のPluginがNullPointerExceptionを吐きます。
・エラーログ(一部)
コード: 全て選択
[19:39:32] [Server thread/WARN]: [RPGSystem] Task #5 for RPGSystem v2.0.0-build.73 generated an exception
java.lang.NullPointerException: null
at reiga.plugin.rpgsystem.PluginMain$2.run(PluginMain.java:89) ~[?:?]
at org.bukkit.craftbukkit.v1_12_R1.scheduler.CraftTask.run(CraftTask.java:76) ~[spigot-1.12.2.jar:git-Spigot-79a30d7-acbc348]
at org.bukkit.craftbukkit.v1_12_R1.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:361) [spigot-1.12.2.jar:git-Spigot-79a30d7-acbc348]
at net.minecraft.server.v1_12_R1.MinecraftServer.D(MinecraftServer.java:739) [spigot-1.12.2.jar:git-Spigot-79a30d7-acbc348]
at net.minecraft.server.v1_12_R1.DedicatedServer.D(DedicatedServer.java:406) [spigot-1.12.2.jar:git-Spigot-79a30d7-acbc348]
at net.minecraft.server.v1_12_R1.MinecraftServer.C(MinecraftServer.java:679) [spigot-1.12.2.jar:git-Spigot-79a30d7-acbc348]
at net.minecraft.server.v1_12_R1.MinecraftServer.run(MinecraftServer.java:577) [spigot-1.12.2.jar:git-Spigot-79a30d7-acbc348]
at java.lang.Thread.run(Unknown Source) [?:1.8.0_231]
[19:39:33] [Server thread/WARN]: [RPGSystem] Task #5 for RPGSystem v2.0.0-build.73 generated an exception
java.lang.NullPointerException: null
at reiga.plugin.rpgsystem.PluginMain$2.run(PluginMain.java:89) ~[?:?]
at org.bukkit.craftbukkit.v1_12_R1.scheduler.CraftTask.run(CraftTask.java:76) ~[spigot-1.12.2.jar:git-Spigot-79a30d7-acbc348]
at org.bukkit.craftbukkit.v1_12_R1.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:361) [spigot-1.12.2.jar:git-Spigot-79a30d7-acbc348]
at net.minecraft.server.v1_12_R1.MinecraftServer.D(MinecraftServer.java:739) [spigot-1.12.2.jar:git-Spigot-79a30d7-acbc348]
at net.minecraft.server.v1_12_R1.DedicatedServer.D(DedicatedServer.java:406) [spigot-1.12.2.jar:git-Spigot-79a30d7-acbc348]
at net.minecraft.server.v1_12_R1.MinecraftServer.C(MinecraftServer.java:679) [spigot-1.12.2.jar:git-Spigot-79a30d7-acbc348]
at net.minecraft.server.v1_12_R1.MinecraftServer.run(MinecraftServer.java:577) [spigot-1.12.2.jar:git-Spigot-79a30d7-acbc348]
at java.lang.Thread.run(Unknown Source) [?:1.8.0_231]
[19:39:33] [User Authenticator #1/INFO]: UUID of player xRa1ga is xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx
[19:39:34] [Server thread/ERROR]: Could not pass event PlayerJoinEvent to RPGSystem v2.0.0-build.73
org.bukkit.event.EventException: null
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:306) ~[spigot-1.12.2.jar:git-Spigot-79a30d7-acbc348]
at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[spigot-1.12.2.jar:git-Spigot-79a30d7-acbc348]
at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:500) [spigot-1.12.2.jar:git-Spigot-79a30d7-acbc348]
at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:485) [spigot-1.12.2.jar:git-Spigot-79a30d7-acbc348]
at net.minecraft.server.v1_12_R1.PlayerList.onPlayerJoin(PlayerList.java:346) [spigot-1.12.2.jar:git-Spigot-79a30d7-acbc348]
at net.minecraft.server.v1_12_R1.PlayerList.a(PlayerList.java:166) [spigot-1.12.2.jar:git-Spigot-79a30d7-acbc348]
at net.minecraft.server.v1_12_R1.LoginListener.b(LoginListener.java:159) [spigot-1.12.2.jar:git-Spigot-79a30d7-acbc348]
at net.minecraft.server.v1_12_R1.LoginListener.e(LoginListener.java:57) [spigot-1.12.2.jar:git-Spigot-79a30d7-acbc348]
at net.minecraft.server.v1_12_R1.NetworkManager.a(NetworkManager.java:233) [spigot-1.12.2.jar:git-Spigot-79a30d7-acbc348]
at net.minecraft.server.v1_12_R1.ServerConnection.c(ServerConnection.java:140) [spigot-1.12.2.jar:git-Spigot-79a30d7-acbc348]
at net.minecraft.server.v1_12_R1.MinecraftServer.D(MinecraftServer.java:845) [spigot-1.12.2.jar:git-Spigot-79a30d7-acbc348]
at net.minecraft.server.v1_12_R1.DedicatedServer.D(DedicatedServer.java:406) [spigot-1.12.2.jar:git-Spigot-79a30d7-acbc348]
at net.minecraft.server.v1_12_R1.MinecraftServer.C(MinecraftServer.java:679) [spigot-1.12.2.jar:git-Spigot-79a30d7-acbc348]
at net.minecraft.server.v1_12_R1.MinecraftServer.run(MinecraftServer.java:577) [spigot-1.12.2.jar:git-Spigot-79a30d7-acbc348]
at java.lang.Thread.run(Unknown Source) [?:1.8.0_231]
Caused by: java.lang.NullPointerException
at reiga.plugin.rpgsystem.items.MenuStar.setMenuStarMeta(MenuStar.java:27) ~[?:?]
at reiga.plugin.rpgsystem.items.MenuStar.<init>(MenuStar.java:22) ~[?:?]
at reiga.plugin.rpgsystem.listener.PlayerListener.onPlayerServerJoin(PlayerListener.java:52) ~[?:?]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_231]
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_231]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_231]
at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_231]
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:302) ~[spigot-1.12.2.jar:git-Spigot-79a30d7-acbc348]
... 14 more
[19:39:34] [Server thread/ERROR]: Could not pass event PlayerJoinEvent to RPGSystem v2.0.0-build.73
org.bukkit.event.EventException: null
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:306) ~[spigot-1.12.2.jar:git-Spigot-79a30d7-acbc348]
at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[spigot-1.12.2.jar:git-Spigot-79a30d7-acbc348]
at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:500) [spigot-1.12.2.jar:git-Spigot-79a30d7-acbc348]
at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:485) [spigot-1.12.2.jar:git-Spigot-79a30d7-acbc348]
at net.minecraft.server.v1_12_R1.PlayerList.onPlayerJoin(PlayerList.java:346) [spigot-1.12.2.jar:git-Spigot-79a30d7-acbc348]
at net.minecraft.server.v1_12_R1.PlayerList.a(PlayerList.java:166) [spigot-1.12.2.jar:git-Spigot-79a30d7-acbc348]
at net.minecraft.server.v1_12_R1.LoginListener.b(LoginListener.java:159) [spigot-1.12.2.jar:git-Spigot-79a30d7-acbc348]
at net.minecraft.server.v1_12_R1.LoginListener.e(LoginListener.java:57) [spigot-1.12.2.jar:git-Spigot-79a30d7-acbc348]
at net.minecraft.server.v1_12_R1.NetworkManager.a(NetworkManager.java:233) [spigot-1.12.2.jar:git-Spigot-79a30d7-acbc348]
at net.minecraft.server.v1_12_R1.ServerConnection.c(ServerConnection.java:140) [spigot-1.12.2.jar:git-Spigot-79a30d7-acbc348]
at net.minecraft.server.v1_12_R1.MinecraftServer.D(MinecraftServer.java:845) [spigot-1.12.2.jar:git-Spigot-79a30d7-acbc348]
at net.minecraft.server.v1_12_R1.DedicatedServer.D(DedicatedServer.java:406) [spigot-1.12.2.jar:git-Spigot-79a30d7-acbc348]
at net.minecraft.server.v1_12_R1.MinecraftServer.C(MinecraftServer.java:679) [spigot-1.12.2.jar:git-Spigot-79a30d7-acbc348]
at net.minecraft.server.v1_12_R1.MinecraftServer.run(MinecraftServer.java:577) [spigot-1.12.2.jar:git-Spigot-79a30d7-acbc348]
at java.lang.Thread.run(Unknown Source) [?:1.8.0_231]
Caused by: java.lang.NullPointerException
at reiga.plugin.rpgsystem.entity.player.RPGPlayer.getClasses(RPGPlayer.java:173) ~[?:?]
at reiga.plugin.rpgsystem.listener.UIListener.onPlayerJoinSidebar(UIListener.java:38) ~[?:?]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_231]
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_231]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_231]
at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_231]
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:302) ~[spigot-1.12.2.jar:git-Spigot-79a30d7-acbc348]
... 14 more
[19:39:34] [Server thread/INFO]: xRe1ga[/127.0.0.1:60244] logged in with entity id 336 at ([world]265.5, 64.0, 262.5)
[19:39:34] [Server thread/WARN]: [RPGSystem] Task #5 for RPGSystem v2.0.0-build.73 generated an exception
java.lang.NullPointerException: null
at reiga.plugin.rpgsystem.PluginMain$2.run(PluginMain.java:89) ~[?:?]
at org.bukkit.craftbukkit.v1_12_R1.scheduler.CraftTask.run(CraftTask.java:76) ~[spigot-1.12.2.jar:git-Spigot-79a30d7-acbc348]
at org.bukkit.craftbukkit.v1_12_R1.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:361) [spigot-1.12.2.jar:git-Spigot-79a30d7-acbc348]
at net.minecraft.server.v1_12_R1.MinecraftServer.D(MinecraftServer.java:739) [spigot-1.12.2.jar:git-Spigot-79a30d7-acbc348]
at net.minecraft.server.v1_12_R1.DedicatedServer.D(DedicatedServer.java:406) [spigot-1.12.2.jar:git-Spigot-79a30d7-acbc348]
at net.minecraft.server.v1_12_R1.MinecraftServer.C(MinecraftServer.java:679) [spigot-1.12.2.jar:git-Spigot-79a30d7-acbc348]
at net.minecraft.server.v1_12_R1.MinecraftServer.run(MinecraftServer.java:577) [spigot-1.12.2.jar:git-Spigot-79a30d7-acbc348]
at java.lang.Thread.run(Unknown Source) [?:1.8.0_231]
私が質問したいのは、
・Runnableで実装した消えないActionBar(ActionBarAPI使用)のNullPointerException
コード: 全て選択
public void setupActionBar() {
int actionBarDelay = getConfig().getInt("actionbarUpdateDelay");
//Player player = rpgplayer.getPlayer();
Bukkit.getScheduler().scheduleSyncRepeatingTask(this, new Runnable() {
@Override
public void run() {
ActionBarAPI.sendActionBarToAllPlayers("§a§l[[[§r §c§lレベル: Lv." + (int)rpgplayer.getLvl() + "§r §e§l==§r §c§lHP: " + (int)player.getHealth() + " §e§l==§r §c§lEXP: " + (int)rpgplayer.getXp() + "§r §e§l==§r §c§l所持金: " + (int)rpgplayer.getMoney() + " REM§r §a§l]]]"); //ここでぬるぽ
}
}, 0, actionBarDelay*20);
}
・PlayerJoinEventにあるMenuStarアイテム登録部分のNullPoinerException
コード: 全て選択
@EventHandler
public void onPlayerServerJoin(PlayerJoinEvent event) {
MenuStar menuStar = new MenuStar(Material.NETHER_STAR, "§d§lメニュー", false, 1);
....
if(!player.hasPlayedBefore()) {
inv.setItem(44, menuStar);
} else {
....
}
}
コード: 全て選択
public class MenuStar extends ItemStack {
private final String name;
private final boolean tradeable;
protected List<ItemsStatus> effects = new ArrayList<>();
public MenuStar(Material type, String name, boolean tradeable, int amount) {
this.tradeable = tradeable;
this.name = name;
setAmount(amount);
setMenuStarMeta(); //ここでぬるぽ
}
public void setMenuStarMeta() {
ItemMeta meta = getItemMeta();
meta.setDisplayName(ChatColor.WHITE + "§d§lメニュー");
setItemMeta(meta);
}
public List<ItemsStatus> getEffects() {
return this.effects;
}
public int getRequireLevel() {
return 0;
}
public String getRequireRPGClass() {
return null;
}
public String getName() {
return this.name;
}
public String getLore() {
return null;
}
public static boolean isMenuStar(ItemStack stack) {
if (stack.getItemMeta().getDisplayName().equals(ChatColor.WHITE + "§d§lメニュー"))
return true;
return false;
}
public boolean isTradeable() {
return this.tradeable;
}
}
・ステータス表示をするScoreBoard登録をするUIListenerのNullPointerException
コード: 全て選択
@EventHandler
public void onPlayerJoinSidebar(PlayerJoinEvent event) {
Player player = event.getPlayer();
RPGPlayer rpgPlayer = new RPGPlayer(player);
ScoreboardManager sbmanager = Bukkit.getScoreboardManager();
Scoreboard sb = sbmanager.getNewScoreboard();
Objective obj = sb.registerNewObjective("RPG", "");
obj.setDisplayName(ChatColor.GREEN + "Reiga RPG");
obj.setDisplaySlot(DisplaySlot.SIDEBAR);
Score empty2 = obj.getScore(" ");
Score empty = obj.getScore("");
Score classes = obj.getScore(ChatColor.YELLOW + ">> Class");
Score classname = obj.getScore(" " + rpgPlayer.getClasses()); //ここでぬるぽ
Score rank = obj.getScore(ChatColor.YELLOW + ">> Rank");
Score rankname = obj.getScore(" " + rpgPlayer.getPrefix());
Score address = obj.getScore(ChatColor.AQUA + "re1gaserver.f5.si");
classes.setScore(7);
classname.setScore(6);
empty2.setScore(5);
rank.setScore(4);
rankname.setScore(3);
empty.setScore(2);
address.setScore(1);
obj = sb.registerNewObjective("Health", "health");
obj.setDisplaySlot(DisplaySlot.BELOW_NAME);
obj.setDisplayName("Health: " + ChatColor.RED);
for(Player players : Bukkit.getOnlinePlayers()) {
obj.getScore(players).setScore((int)players.getHealth());
}
player.setScoreboard(sb);
}
コード: 全て選択
public class RPGPlayer {
private Player player;
private PlayerManager playerManager;
private int lvl, mp, sp, xp, vit, str, agi, tec, luk, atk, cri, def, res;
private int logincount;
private long money;
private String prefix;
private String prefixName;
private String classes;
public RPGPlayer(Player player) {
this.player = player;
}
public int getVit() {
//this.uuid = uuid;
//return vit;
return playerManager.getData().getInt("Status.VIT");
}
public void setVit(int vit) {
playerManager.getData().set("Status.VIT", vit);
playerManager.save();
}
public int getStr() {
return str;
}
public void setStr(int str) {
this.str = str;
}
public int getAgi() {
return agi;
}
public void setAgi(int agi) {
this.agi = agi;
}
public int getTec() {
return tec;
}
public void setTec(int tec) {
this.tec = tec;
}
public int getLuk() {
return luk;
}
public void setLuk(int luk) {
this.luk = luk;
}
public int getAtk() {
return atk;
}
public void setAtk(int atk) {
this.atk = atk;
}
public int getCri() {
return cri;
}
public void setCri(int cri) {
this.cri = cri;
}
public int getDef() {
return def;
}
public void setDef(int def) {
this.def = def;
}
public int getRes() {
return res;
}
public void setRes(int res) {
this.res = res;
}
public int getLvl() {
return playerManager.getData().getInt("Status.Level");
}
public void setLvl(int lvl) {
this.lvl = lvl;
}
public int getMp() {
return mp;
}
public void setMp(int mp) {
this.mp = mp;
}
public int getSp() {
return sp;
}
public void setSp(int sp) {
this.sp = sp;
}
public int getXp() {
return playerManager.getData().getInt("Status.Experience");
}
public void setXp(int xp) {
this.xp = xp;
}
public int getLogincount() {
return this.logincount;
}
public void setLogincount(int logincount) {
this.logincount = logincount;
}
public void addLogincount(int i) {
setLogincount(i + getLogincount());
}
public String getPrefix() {
return playerManager.getData().getString("Prefix");
}
public void setPrefix(String prefix) {
this.prefix = prefix;
}
public String getPrefixName() {
return playerManager.getData().getString("PrefixName");
}
public void setPrefixName(String prefixName) {
this.prefixName = prefixName;
}
public long getMoney() {
return playerManager.getData().getInt("Status.Money");
}
public void setMoney(long money) {
this.money = money;
}
public String getClasses() {
return playerManager.getData().getString("Class");
}
public void setClasses(String classes) {
this.classes = classes;
}
public Player getPlayer() {
return this.player;
}
public UUID getUUID() {
return getPlayer().getUniqueId();
}
public void addStatus(String statusName, int param) {
if(statusName == "vit") {
setVit(getVit() + param);
} else if(statusName == "str") {
setStr(getStr() + param);
} else if(statusName == "agi") {
setAgi(getAgi() + param);
} else if(statusName == "tec") {
setTec(getTec() + param);
} else if(statusName == "luk") {
setLuk(getLuk() + param);
} else if(statusName == "atk") {
setAtk(getAtk() + param);
} else if(statusName == "cri") {
setCri(getCri() + param);
} else if(statusName == "def") {
setDef(getDef() + param);
} else if(statusName == "res") {
setRes(getRes() + param);
} else if(statusName == "mp") {
setMp(getMp() + param);
} else if(statusName == "sp") {
setSp(getSp() + param);
} else if(statusName == "xp") {
setXp(getXp() + param);
} else {
player.sendMessage("Add status Failed");
}
}
public void resetStatus() {
this.vit = 1;
this.str = 1;
this.agi = 1;
this.tec = 1;
this.luk = 1;
this.atk = 1;
this.cri = 1;
this.def = 1;
this.res = 1;
this.mp = 1;
this.sp = 20;
this.xp = 0;
this.lvl = 1;
}
コード: 全て選択
public class PlayerManager {
//private static HashMap<UUID, RPGPlayer> players = new HashMap<>();
private String uuid;
private FileConfiguration config;
private static File dataFileDir;
private File file;
private static PluginMain plugin;
private boolean isDebug;
public static void setupPlayerDataDir(PluginMain _plugin) {
plugin = _plugin;
dataFileDir = new File(plugin.getDataFolder() + File.separator + "players");
if(!dataFileDir.exists()) {
dataFileDir.mkdir();
plugin.getLogger().log(Level.INFO, "players data dir has been generated");
}
}
public PlayerManager(String uuid) {
this.uuid = uuid;
this.file = new File(dataFileDir + File.separator + this.uuid + ".yml");
if (this.file.exists()) {
this.file = new File(dataFileDir + File.separator + this.uuid + ".yml");
try {
this.file.createNewFile();
if(this.isDebug)
plugin.getLogger().log(Level.INFO, "player data file: " + this.uuid + ".yml has been created");
} catch (Exception e) {
plugin.getLogger().log(Level.SEVERE, "player data file: " + this.uuid + ".yml could not be created! Reason: " + e.getMessage());
if(this.isDebug)
e.printStackTrace();
}
}
this.config = (FileConfiguration)YamlConfiguration.loadConfiguration(this.file);
}
public FileConfiguration getData() {
return this.config;
}
public File getFile() {
return this.file;
}
public void save() {
try {
this.config.save(this.file);
} catch (IOException e) {
plugin.getLogger().log(Level.SEVERE, "player data file: " + this.uuid + ".yml could not be saved! Reason: " + e.getMessage());
if(this.isDebug)
e.printStackTrace();
}
}
public void saveDefault() {
try {
getData().addDefault("Name", "PlayerName");
getData().addDefault("LoginCount", 1);
getData().addDefault("Prefix", " ");
getData().addDefault("PrefixName", "none");
getData().addDefault("Class", "§f§lNone§r");
getData().addDefault("Status.HealthPoint", 50);
getData().addDefault("Status.MagicPoint", 20);
getData().addDefault("Status.StatusPoint", 0);
getData().addDefault("Status.Level", 1);
getData().addDefault("Status.Experience", 0);
getData().addDefault("Status.Money", 1000);
getData().addDefault("Status.VIT", 1);
getData().addDefault("Status.STR", 1);
getData().addDefault("Status.AGI", 1);
getData().addDefault("Status.TEC", 1);
getData().addDefault("Status.LUK", 1);
getData().addDefault("Status.ATK", 1);
getData().addDefault("Status.CRI", 1);
getData().addDefault("Status.DEF", 1);
getData().addDefault("Status.RES", 1);
} catch (Exception e) {
plugin.getLogger().log(Level.SEVERE, "player data file: " + this.uuid + ".yml could not be saved! Reason: " + e.getMessage());
if(this.isDebug)
e.printStackTrace();
}
}
public void login() {
try {
getData().getString("Name");
getData().getInt("LoginCount");
getData().getString("Prefix");
getData().getString("PrefixName");
getData().getString("Class");
getData().getInt("Status.HealthPoint");
getData().getInt("Status.MagicPoint");
getData().getInt("Status.StatusPoint");
getData().getInt("Status.Level");
getData().getInt("Status.Experience");
getData().getInt("Status.Money");
getData().getInt("Status.VIT");
getData().getInt("Status.STR");
getData().getInt("Status.AGI");
getData().getInt("Status.TEC");
getData().getInt("Status.LUK");
getData().getInt("Status.ATK");
getData().getInt("Status.CRI");
getData().getInt("Status.DEF");
getData().getInt("Status.RES");
} catch (Exception e) {
plugin.getLogger().log(Level.SEVERE, "player data file: " + this.uuid + ".yml could not be loaded! Reason: " + e.getMessage());
if(this.isDebug)
e.printStackTrace();
}
}
}
の解決方法になります。わかる方がいらっしゃったら教えてくれると嬉しいです。
開発環境:
Eclipse IDE 2020-06
JDK 8u231
Spigot-1.12.2-R0.1
要求Plugin:
ActionBarAPI-1.5.4
ProtocolLib(最新)
私が運営するRPGサーバーにて使用する予定のPluginがNullPointerExceptionを吐きます。
・エラーログ(一部)
[spoiler]
[code=nohighlight]
[19:39:32] [Server thread/WARN]: [RPGSystem] Task #5 for RPGSystem v2.0.0-build.73 generated an exception
java.lang.NullPointerException: null
at reiga.plugin.rpgsystem.PluginMain$2.run(PluginMain.java:89) ~[?:?]
at org.bukkit.craftbukkit.v1_12_R1.scheduler.CraftTask.run(CraftTask.java:76) ~[spigot-1.12.2.jar:git-Spigot-79a30d7-acbc348]
at org.bukkit.craftbukkit.v1_12_R1.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:361) [spigot-1.12.2.jar:git-Spigot-79a30d7-acbc348]
at net.minecraft.server.v1_12_R1.MinecraftServer.D(MinecraftServer.java:739) [spigot-1.12.2.jar:git-Spigot-79a30d7-acbc348]
at net.minecraft.server.v1_12_R1.DedicatedServer.D(DedicatedServer.java:406) [spigot-1.12.2.jar:git-Spigot-79a30d7-acbc348]
at net.minecraft.server.v1_12_R1.MinecraftServer.C(MinecraftServer.java:679) [spigot-1.12.2.jar:git-Spigot-79a30d7-acbc348]
at net.minecraft.server.v1_12_R1.MinecraftServer.run(MinecraftServer.java:577) [spigot-1.12.2.jar:git-Spigot-79a30d7-acbc348]
at java.lang.Thread.run(Unknown Source) [?:1.8.0_231]
[19:39:33] [Server thread/WARN]: [RPGSystem] Task #5 for RPGSystem v2.0.0-build.73 generated an exception
java.lang.NullPointerException: null
at reiga.plugin.rpgsystem.PluginMain$2.run(PluginMain.java:89) ~[?:?]
at org.bukkit.craftbukkit.v1_12_R1.scheduler.CraftTask.run(CraftTask.java:76) ~[spigot-1.12.2.jar:git-Spigot-79a30d7-acbc348]
at org.bukkit.craftbukkit.v1_12_R1.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:361) [spigot-1.12.2.jar:git-Spigot-79a30d7-acbc348]
at net.minecraft.server.v1_12_R1.MinecraftServer.D(MinecraftServer.java:739) [spigot-1.12.2.jar:git-Spigot-79a30d7-acbc348]
at net.minecraft.server.v1_12_R1.DedicatedServer.D(DedicatedServer.java:406) [spigot-1.12.2.jar:git-Spigot-79a30d7-acbc348]
at net.minecraft.server.v1_12_R1.MinecraftServer.C(MinecraftServer.java:679) [spigot-1.12.2.jar:git-Spigot-79a30d7-acbc348]
at net.minecraft.server.v1_12_R1.MinecraftServer.run(MinecraftServer.java:577) [spigot-1.12.2.jar:git-Spigot-79a30d7-acbc348]
at java.lang.Thread.run(Unknown Source) [?:1.8.0_231]
[19:39:33] [User Authenticator #1/INFO]: UUID of player xRa1ga is xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx
[19:39:34] [Server thread/ERROR]: Could not pass event PlayerJoinEvent to RPGSystem v2.0.0-build.73
org.bukkit.event.EventException: null
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:306) ~[spigot-1.12.2.jar:git-Spigot-79a30d7-acbc348]
at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[spigot-1.12.2.jar:git-Spigot-79a30d7-acbc348]
at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:500) [spigot-1.12.2.jar:git-Spigot-79a30d7-acbc348]
at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:485) [spigot-1.12.2.jar:git-Spigot-79a30d7-acbc348]
at net.minecraft.server.v1_12_R1.PlayerList.onPlayerJoin(PlayerList.java:346) [spigot-1.12.2.jar:git-Spigot-79a30d7-acbc348]
at net.minecraft.server.v1_12_R1.PlayerList.a(PlayerList.java:166) [spigot-1.12.2.jar:git-Spigot-79a30d7-acbc348]
at net.minecraft.server.v1_12_R1.LoginListener.b(LoginListener.java:159) [spigot-1.12.2.jar:git-Spigot-79a30d7-acbc348]
at net.minecraft.server.v1_12_R1.LoginListener.e(LoginListener.java:57) [spigot-1.12.2.jar:git-Spigot-79a30d7-acbc348]
at net.minecraft.server.v1_12_R1.NetworkManager.a(NetworkManager.java:233) [spigot-1.12.2.jar:git-Spigot-79a30d7-acbc348]
at net.minecraft.server.v1_12_R1.ServerConnection.c(ServerConnection.java:140) [spigot-1.12.2.jar:git-Spigot-79a30d7-acbc348]
at net.minecraft.server.v1_12_R1.MinecraftServer.D(MinecraftServer.java:845) [spigot-1.12.2.jar:git-Spigot-79a30d7-acbc348]
at net.minecraft.server.v1_12_R1.DedicatedServer.D(DedicatedServer.java:406) [spigot-1.12.2.jar:git-Spigot-79a30d7-acbc348]
at net.minecraft.server.v1_12_R1.MinecraftServer.C(MinecraftServer.java:679) [spigot-1.12.2.jar:git-Spigot-79a30d7-acbc348]
at net.minecraft.server.v1_12_R1.MinecraftServer.run(MinecraftServer.java:577) [spigot-1.12.2.jar:git-Spigot-79a30d7-acbc348]
at java.lang.Thread.run(Unknown Source) [?:1.8.0_231]
Caused by: java.lang.NullPointerException
at reiga.plugin.rpgsystem.items.MenuStar.setMenuStarMeta(MenuStar.java:27) ~[?:?]
at reiga.plugin.rpgsystem.items.MenuStar.<init>(MenuStar.java:22) ~[?:?]
at reiga.plugin.rpgsystem.listener.PlayerListener.onPlayerServerJoin(PlayerListener.java:52) ~[?:?]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_231]
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_231]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_231]
at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_231]
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:302) ~[spigot-1.12.2.jar:git-Spigot-79a30d7-acbc348]
... 14 more
[19:39:34] [Server thread/ERROR]: Could not pass event PlayerJoinEvent to RPGSystem v2.0.0-build.73
org.bukkit.event.EventException: null
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:306) ~[spigot-1.12.2.jar:git-Spigot-79a30d7-acbc348]
at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[spigot-1.12.2.jar:git-Spigot-79a30d7-acbc348]
at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:500) [spigot-1.12.2.jar:git-Spigot-79a30d7-acbc348]
at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:485) [spigot-1.12.2.jar:git-Spigot-79a30d7-acbc348]
at net.minecraft.server.v1_12_R1.PlayerList.onPlayerJoin(PlayerList.java:346) [spigot-1.12.2.jar:git-Spigot-79a30d7-acbc348]
at net.minecraft.server.v1_12_R1.PlayerList.a(PlayerList.java:166) [spigot-1.12.2.jar:git-Spigot-79a30d7-acbc348]
at net.minecraft.server.v1_12_R1.LoginListener.b(LoginListener.java:159) [spigot-1.12.2.jar:git-Spigot-79a30d7-acbc348]
at net.minecraft.server.v1_12_R1.LoginListener.e(LoginListener.java:57) [spigot-1.12.2.jar:git-Spigot-79a30d7-acbc348]
at net.minecraft.server.v1_12_R1.NetworkManager.a(NetworkManager.java:233) [spigot-1.12.2.jar:git-Spigot-79a30d7-acbc348]
at net.minecraft.server.v1_12_R1.ServerConnection.c(ServerConnection.java:140) [spigot-1.12.2.jar:git-Spigot-79a30d7-acbc348]
at net.minecraft.server.v1_12_R1.MinecraftServer.D(MinecraftServer.java:845) [spigot-1.12.2.jar:git-Spigot-79a30d7-acbc348]
at net.minecraft.server.v1_12_R1.DedicatedServer.D(DedicatedServer.java:406) [spigot-1.12.2.jar:git-Spigot-79a30d7-acbc348]
at net.minecraft.server.v1_12_R1.MinecraftServer.C(MinecraftServer.java:679) [spigot-1.12.2.jar:git-Spigot-79a30d7-acbc348]
at net.minecraft.server.v1_12_R1.MinecraftServer.run(MinecraftServer.java:577) [spigot-1.12.2.jar:git-Spigot-79a30d7-acbc348]
at java.lang.Thread.run(Unknown Source) [?:1.8.0_231]
Caused by: java.lang.NullPointerException
at reiga.plugin.rpgsystem.entity.player.RPGPlayer.getClasses(RPGPlayer.java:173) ~[?:?]
at reiga.plugin.rpgsystem.listener.UIListener.onPlayerJoinSidebar(UIListener.java:38) ~[?:?]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_231]
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_231]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_231]
at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_231]
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:302) ~[spigot-1.12.2.jar:git-Spigot-79a30d7-acbc348]
... 14 more
[19:39:34] [Server thread/INFO]: xRe1ga[/127.0.0.1:60244] logged in with entity id 336 at ([world]265.5, 64.0, 262.5)
[19:39:34] [Server thread/WARN]: [RPGSystem] Task #5 for RPGSystem v2.0.0-build.73 generated an exception
java.lang.NullPointerException: null
at reiga.plugin.rpgsystem.PluginMain$2.run(PluginMain.java:89) ~[?:?]
at org.bukkit.craftbukkit.v1_12_R1.scheduler.CraftTask.run(CraftTask.java:76) ~[spigot-1.12.2.jar:git-Spigot-79a30d7-acbc348]
at org.bukkit.craftbukkit.v1_12_R1.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:361) [spigot-1.12.2.jar:git-Spigot-79a30d7-acbc348]
at net.minecraft.server.v1_12_R1.MinecraftServer.D(MinecraftServer.java:739) [spigot-1.12.2.jar:git-Spigot-79a30d7-acbc348]
at net.minecraft.server.v1_12_R1.DedicatedServer.D(DedicatedServer.java:406) [spigot-1.12.2.jar:git-Spigot-79a30d7-acbc348]
at net.minecraft.server.v1_12_R1.MinecraftServer.C(MinecraftServer.java:679) [spigot-1.12.2.jar:git-Spigot-79a30d7-acbc348]
at net.minecraft.server.v1_12_R1.MinecraftServer.run(MinecraftServer.java:577) [spigot-1.12.2.jar:git-Spigot-79a30d7-acbc348]
at java.lang.Thread.run(Unknown Source) [?:1.8.0_231]
[/code]
[/spoiler]
私が質問したいのは、
・Runnableで実装した消えないActionBar(ActionBarAPI使用)のNullPointerException
[spoiler=ActionBar実装部分]
[code=java]
public void setupActionBar() {
int actionBarDelay = getConfig().getInt("actionbarUpdateDelay");
//Player player = rpgplayer.getPlayer();
Bukkit.getScheduler().scheduleSyncRepeatingTask(this, new Runnable() {
@Override
public void run() {
ActionBarAPI.sendActionBarToAllPlayers("§a§l[[[§r §c§lレベル: Lv." + (int)rpgplayer.getLvl() + "§r §e§l==§r §c§lHP: " + (int)player.getHealth() + " §e§l==§r §c§lEXP: " + (int)rpgplayer.getXp() + "§r §e§l==§r §c§l所持金: " + (int)rpgplayer.getMoney() + " REM§r §a§l]]]"); //ここでぬるぽ
}
}, 0, actionBarDelay*20);
}
[/code]
[/spoiler]
・PlayerJoinEventにあるMenuStarアイテム登録部分のNullPoinerException
[spoiler=PlayerJoinEvent、MenuStar部分]
[code=java]
@EventHandler
public void onPlayerServerJoin(PlayerJoinEvent event) {
MenuStar menuStar = new MenuStar(Material.NETHER_STAR, "§d§lメニュー", false, 1);
....
if(!player.hasPlayedBefore()) {
inv.setItem(44, menuStar);
} else {
....
}
}
[/code]
[/spoiler]
[spoiler=MenuStar.class]
[code=java]
public class MenuStar extends ItemStack {
private final String name;
private final boolean tradeable;
protected List<ItemsStatus> effects = new ArrayList<>();
public MenuStar(Material type, String name, boolean tradeable, int amount) {
this.tradeable = tradeable;
this.name = name;
setAmount(amount);
setMenuStarMeta(); //ここでぬるぽ
}
public void setMenuStarMeta() {
ItemMeta meta = getItemMeta();
meta.setDisplayName(ChatColor.WHITE + "§d§lメニュー");
setItemMeta(meta);
}
public List<ItemsStatus> getEffects() {
return this.effects;
}
public int getRequireLevel() {
return 0;
}
public String getRequireRPGClass() {
return null;
}
public String getName() {
return this.name;
}
public String getLore() {
return null;
}
public static boolean isMenuStar(ItemStack stack) {
if (stack.getItemMeta().getDisplayName().equals(ChatColor.WHITE + "§d§lメニュー"))
return true;
return false;
}
public boolean isTradeable() {
return this.tradeable;
}
}
[/code]
[/spoiler]
・ステータス表示をするScoreBoard登録をするUIListenerのNullPointerException
[spoiler=UIListener.class(Scoreboard)]
[code=java]
@EventHandler
public void onPlayerJoinSidebar(PlayerJoinEvent event) {
Player player = event.getPlayer();
RPGPlayer rpgPlayer = new RPGPlayer(player);
ScoreboardManager sbmanager = Bukkit.getScoreboardManager();
Scoreboard sb = sbmanager.getNewScoreboard();
Objective obj = sb.registerNewObjective("RPG", "");
obj.setDisplayName(ChatColor.GREEN + "Reiga RPG");
obj.setDisplaySlot(DisplaySlot.SIDEBAR);
Score empty2 = obj.getScore(" ");
Score empty = obj.getScore("");
Score classes = obj.getScore(ChatColor.YELLOW + ">> Class");
Score classname = obj.getScore(" " + rpgPlayer.getClasses()); //ここでぬるぽ
Score rank = obj.getScore(ChatColor.YELLOW + ">> Rank");
Score rankname = obj.getScore(" " + rpgPlayer.getPrefix());
Score address = obj.getScore(ChatColor.AQUA + "re1gaserver.f5.si");
classes.setScore(7);
classname.setScore(6);
empty2.setScore(5);
rank.setScore(4);
rankname.setScore(3);
empty.setScore(2);
address.setScore(1);
obj = sb.registerNewObjective("Health", "health");
obj.setDisplaySlot(DisplaySlot.BELOW_NAME);
obj.setDisplayName("Health: " + ChatColor.RED);
for(Player players : Bukkit.getOnlinePlayers()) {
obj.getScore(players).setScore((int)players.getHealth());
}
player.setScoreboard(sb);
}
[/code]
[/spoiler]
[spoiler=getterがある、RPGPlayer.class]
[code=java]
public class RPGPlayer {
private Player player;
private PlayerManager playerManager;
private int lvl, mp, sp, xp, vit, str, agi, tec, luk, atk, cri, def, res;
private int logincount;
private long money;
private String prefix;
private String prefixName;
private String classes;
public RPGPlayer(Player player) {
this.player = player;
}
public int getVit() {
//this.uuid = uuid;
//return vit;
return playerManager.getData().getInt("Status.VIT");
}
public void setVit(int vit) {
playerManager.getData().set("Status.VIT", vit);
playerManager.save();
}
public int getStr() {
return str;
}
public void setStr(int str) {
this.str = str;
}
public int getAgi() {
return agi;
}
public void setAgi(int agi) {
this.agi = agi;
}
public int getTec() {
return tec;
}
public void setTec(int tec) {
this.tec = tec;
}
public int getLuk() {
return luk;
}
public void setLuk(int luk) {
this.luk = luk;
}
public int getAtk() {
return atk;
}
public void setAtk(int atk) {
this.atk = atk;
}
public int getCri() {
return cri;
}
public void setCri(int cri) {
this.cri = cri;
}
public int getDef() {
return def;
}
public void setDef(int def) {
this.def = def;
}
public int getRes() {
return res;
}
public void setRes(int res) {
this.res = res;
}
public int getLvl() {
return playerManager.getData().getInt("Status.Level");
}
public void setLvl(int lvl) {
this.lvl = lvl;
}
public int getMp() {
return mp;
}
public void setMp(int mp) {
this.mp = mp;
}
public int getSp() {
return sp;
}
public void setSp(int sp) {
this.sp = sp;
}
public int getXp() {
return playerManager.getData().getInt("Status.Experience");
}
public void setXp(int xp) {
this.xp = xp;
}
public int getLogincount() {
return this.logincount;
}
public void setLogincount(int logincount) {
this.logincount = logincount;
}
public void addLogincount(int i) {
setLogincount(i + getLogincount());
}
public String getPrefix() {
return playerManager.getData().getString("Prefix");
}
public void setPrefix(String prefix) {
this.prefix = prefix;
}
public String getPrefixName() {
return playerManager.getData().getString("PrefixName");
}
public void setPrefixName(String prefixName) {
this.prefixName = prefixName;
}
public long getMoney() {
return playerManager.getData().getInt("Status.Money");
}
public void setMoney(long money) {
this.money = money;
}
public String getClasses() {
return playerManager.getData().getString("Class");
}
public void setClasses(String classes) {
this.classes = classes;
}
public Player getPlayer() {
return this.player;
}
public UUID getUUID() {
return getPlayer().getUniqueId();
}
public void addStatus(String statusName, int param) {
if(statusName == "vit") {
setVit(getVit() + param);
} else if(statusName == "str") {
setStr(getStr() + param);
} else if(statusName == "agi") {
setAgi(getAgi() + param);
} else if(statusName == "tec") {
setTec(getTec() + param);
} else if(statusName == "luk") {
setLuk(getLuk() + param);
} else if(statusName == "atk") {
setAtk(getAtk() + param);
} else if(statusName == "cri") {
setCri(getCri() + param);
} else if(statusName == "def") {
setDef(getDef() + param);
} else if(statusName == "res") {
setRes(getRes() + param);
} else if(statusName == "mp") {
setMp(getMp() + param);
} else if(statusName == "sp") {
setSp(getSp() + param);
} else if(statusName == "xp") {
setXp(getXp() + param);
} else {
player.sendMessage("Add status Failed");
}
}
public void resetStatus() {
this.vit = 1;
this.str = 1;
this.agi = 1;
this.tec = 1;
this.luk = 1;
this.atk = 1;
this.cri = 1;
this.def = 1;
this.res = 1;
this.mp = 1;
this.sp = 20;
this.xp = 0;
this.lvl = 1;
}
[/code]
[/spoiler]
[spoiler=RPGPlayerのgetClassesが参照しているPlayerManager.class]
[code=java]
public class PlayerManager {
//private static HashMap<UUID, RPGPlayer> players = new HashMap<>();
private String uuid;
private FileConfiguration config;
private static File dataFileDir;
private File file;
private static PluginMain plugin;
private boolean isDebug;
public static void setupPlayerDataDir(PluginMain _plugin) {
plugin = _plugin;
dataFileDir = new File(plugin.getDataFolder() + File.separator + "players");
if(!dataFileDir.exists()) {
dataFileDir.mkdir();
plugin.getLogger().log(Level.INFO, "players data dir has been generated");
}
}
public PlayerManager(String uuid) {
this.uuid = uuid;
this.file = new File(dataFileDir + File.separator + this.uuid + ".yml");
if (this.file.exists()) {
this.file = new File(dataFileDir + File.separator + this.uuid + ".yml");
try {
this.file.createNewFile();
if(this.isDebug)
plugin.getLogger().log(Level.INFO, "player data file: " + this.uuid + ".yml has been created");
} catch (Exception e) {
plugin.getLogger().log(Level.SEVERE, "player data file: " + this.uuid + ".yml could not be created! Reason: " + e.getMessage());
if(this.isDebug)
e.printStackTrace();
}
}
this.config = (FileConfiguration)YamlConfiguration.loadConfiguration(this.file);
}
public FileConfiguration getData() {
return this.config;
}
public File getFile() {
return this.file;
}
public void save() {
try {
this.config.save(this.file);
} catch (IOException e) {
plugin.getLogger().log(Level.SEVERE, "player data file: " + this.uuid + ".yml could not be saved! Reason: " + e.getMessage());
if(this.isDebug)
e.printStackTrace();
}
}
public void saveDefault() {
try {
getData().addDefault("Name", "PlayerName");
getData().addDefault("LoginCount", 1);
getData().addDefault("Prefix", " ");
getData().addDefault("PrefixName", "none");
getData().addDefault("Class", "§f§lNone§r");
getData().addDefault("Status.HealthPoint", 50);
getData().addDefault("Status.MagicPoint", 20);
getData().addDefault("Status.StatusPoint", 0);
getData().addDefault("Status.Level", 1);
getData().addDefault("Status.Experience", 0);
getData().addDefault("Status.Money", 1000);
getData().addDefault("Status.VIT", 1);
getData().addDefault("Status.STR", 1);
getData().addDefault("Status.AGI", 1);
getData().addDefault("Status.TEC", 1);
getData().addDefault("Status.LUK", 1);
getData().addDefault("Status.ATK", 1);
getData().addDefault("Status.CRI", 1);
getData().addDefault("Status.DEF", 1);
getData().addDefault("Status.RES", 1);
} catch (Exception e) {
plugin.getLogger().log(Level.SEVERE, "player data file: " + this.uuid + ".yml could not be saved! Reason: " + e.getMessage());
if(this.isDebug)
e.printStackTrace();
}
}
public void login() {
try {
getData().getString("Name");
getData().getInt("LoginCount");
getData().getString("Prefix");
getData().getString("PrefixName");
getData().getString("Class");
getData().getInt("Status.HealthPoint");
getData().getInt("Status.MagicPoint");
getData().getInt("Status.StatusPoint");
getData().getInt("Status.Level");
getData().getInt("Status.Experience");
getData().getInt("Status.Money");
getData().getInt("Status.VIT");
getData().getInt("Status.STR");
getData().getInt("Status.AGI");
getData().getInt("Status.TEC");
getData().getInt("Status.LUK");
getData().getInt("Status.ATK");
getData().getInt("Status.CRI");
getData().getInt("Status.DEF");
getData().getInt("Status.RES");
} catch (Exception e) {
plugin.getLogger().log(Level.SEVERE, "player data file: " + this.uuid + ".yml could not be loaded! Reason: " + e.getMessage());
if(this.isDebug)
e.printStackTrace();
}
}
}
[/code]
[/spoiler]
の解決方法になります。わかる方がいらっしゃったら教えてくれると嬉しいです。
開発環境:
Eclipse IDE 2020-06
JDK 8u231
Spigot-1.12.2-R0.1
要求Plugin:
ActionBarAPI-1.5.4
ProtocolLib(最新)