Plugin Errors after Server Reload

Discussion in 'Plugin Development' started by Staartvin, May 7, 2012.

Thread Status:
Not open for further replies.
  1. Offline

    Staartvin

    Hello everyone once again,

    I'm maintaining my plugin called AntiAddict.
    I've come to a problem where when I reload the server, the plugin breaks and I have to start and stop it again...
    I know that reloading shouldn't be used, but there are a lot of server admins who do it.
    Could you help me out?

    This is what I get once the server is reloaded and I move:



    Code:
    16:30:43 [SEVERE] Could not pass event PlayerMoveEvent to AntiAddict
    org.bukkit.event.EventException
            at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.ja
    va:303)
            at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.jav
    a:62)
            at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.j
    ava:459)
            at net.minecraft.server.NetServerHandler.a(NetServerHandler.java:209)
            at net.minecraft.server.Packet10Flying.handle(SourceFile:126)
            at net.minecraft.server.NetworkManager.b(NetworkManager.java:229)
            at net.minecraft.server.NetServerHandler.a(NetServerHandler.java:113)
            at net.minecraft.server.NetworkListenThread.a(NetworkListenThread.java:7
    8)
            at net.minecraft.server.MinecraftServer.w(MinecraftServer.java:551)
            at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:449)
            at net.minecraft.server.ThreadServerApplication.run(SourceFile:492)
    Caused by: java.lang.NullPointerException
            at me.staartvin.AntiAddict.Players.onPlayerMove(Players.java:97)
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
            at java.lang.reflect.Method.invoke(Unknown Source)
            at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.ja
    va:301)
            ... 10 more

    This is my main class 'AntiAddict.java':

    Code:java
    1. package me.staartvin.AntiAddict;
    2.  
    3. import java.io.File;
    4. import java.util.Arrays;
    5. import java.util.List;
    6.  
    7. import org.bukkit.Bukkit;
    8. import org.bukkit.ChatColor;
    9. import org.bukkit.command.Command;
    10. import org.bukkit.command.CommandSender;
    11. import org.bukkit.configuration.file.FileConfiguration;
    12. import org.bukkit.entity.Player;
    13. import org.bukkit.event.EventHandler;
    14. import org.bukkit.event.EventPriority;
    15. import org.bukkit.inventory.ItemStack;
    16. import org.bukkit.plugin.Plugin;
    17. import org.bukkit.plugin.PluginManager;
    18. import org.bukkit.plugin.java.JavaPlugin;
    19.  
    20. public class AntiAddict extends JavaPlugin
    21. {
    22. PluginManager pm;
    23. public static boolean status = true;
    24. public static boolean limitall = false;
    25. public static boolean permissionsWarning = true;
    26. Plugin PermissionsEx = Bukkit.getServer().getPluginManager().getPlugin("PermissionsEx");
    27. Plugin bPermissions = Bukkit.getServer().getPluginManager().getPlugin("bPermissions");
    28. Plugin PermissionsBukkit = Bukkit.getServer().getPluginManager().getPlugin("PermissionsBukkit");
    29. Plugin PermissionsPlus = Bukkit.getServer().getPluginManager().getPlugin("PermissionsPlus");
    30. Plugin AllPermissions = Bukkit.getServer().getPluginManager().getPlugin("AllPermissions");
    31. Plugin Permissions = Bukkit.getServer().getPluginManager().getPlugin("Permissions");
    32. Plugin GroupManager = Bukkit.getServer().getPluginManager().getPlugin("GroupManager");
    33. public static long timelimitmil;
    34. public static long timelimit;
    35. public static String limitkickmessage;
    36. public static String joinmessagePart1;
    37. public static String joinmessagePart2;
    38. public static String kickmessagePart1;
    39. public static String kickmessagePart2;
    40. public static int premiumItemId;
    41. public static int premiumItemAmount;
    42. public static String PremiumRewardMessage;
    43. public static ItemStack premiumStack;
    44. long jointime;
    45. long playtime;
    46. long currenttime;
    47. long playtimeold;
    48. public static ChatColor red = ChatColor.RED;
    49. public static ChatColor green = ChatColor.GREEN;
    50. public static ChatColor white = ChatColor.WHITE;
    51. public static List<?> addicts;
    52. public String developers = "Staartvin";
    53. public String[] Addictlist = {};
    54. // public static List premiums;
    55. File configFile;
    56. FileConfiguration config;
    57. public final Players playerListener = new Players();
    58. public String date = "6 May, 2012";
    59.  
    60. public void onDisable()
    61. {
    62. System.out.println("AntiAddict has been disabled!");
    63. reloadConfig();
    64. saveConfig();
    65. }
    66.  
    67. public void onReload()
    68. {
    69.  
    70. }
    71.  
    72. public void onEnable()
    73. {
    74. System.out.println("[AntiAddict] Enabling AntiAddict by Staartvin");
    75. System.out.println("[AntiAddict] and original coded by Phiwa!");
    76. loadConfiguration();
    77. Plugin PermissionsEx = Bukkit.getServer().getPluginManager().getPlugin("PermissionsEx");
    78.  
    79.  
    80. if (getConfig().getBoolean("AntiAddict.PermissionsWarningOnStartup")) {
    81. if (PermissionsEx != null) {
    82. System.out.println("[AntiAddict] PermissionsEx is found! Hooking into it!");
    83. }
    84. else if (bPermissions != null) {
    85. System.out.println("[AntiAddict] bPermissions is found! Hooking into it!");
    86. }
    87. else if (PermissionsBukkit != null) {
    88. System.out.println("[AntiAddict] PermissionsBukkit is found! Hooking into it!");
    89. }
    90. else if (PermissionsPlus != null) {
    91. System.out.println("[AntiAddict] PermissionsPlus is found! Hooking into it!");
    92. }
    93. else if (AllPermissions != null) {
    94. System.out.println("[AntiAddict] AllPermissions is found! Hooking into it!");
    95. }
    96. else if (GroupManager != null) {
    97. System.out.println("[AntiAddict] GroupManager is found! Hooking into it!");
    98. }
    99. else if (Permissions != null) {
    100. System.out.println("[AntiAddict] Permissions is found! Hooking into it!");
    101. }
    102. else {
    103. System.out.println("[AntiAddict] Supported Permissions plugin not found!");
    104. System.out.println("[AntiAddict] May causes errors when trying to perform command!");
    105. System.out.println("[AntiAddict] If you have a permissions plugin installed, but this text comes up:");
    106. System.out.println("[AntiAddict] Go to [url]http://dev.bukkit.org/server-mods/antiaddict/pages/supported-permissions-plugins/[/url] " +
    107. "for a list of supported plugins!");
    108. }
    109. }
    110.  
    111.  
    112.  
    113. // this.configFile = new File(getDataFolder(), "config.yml");
    114. // try
    115. // {
    116. // firstRun();
    117. // } catch (Exception e) {
    118. // e.printStackTrace();
    119. // System.out.println("[AntiAddict][Important] A serious problem occured, please contact the author of this plugin [mail(at)[email][email protected][/email]]!");
    120. // }
    121.  
    122. // this.config = new YamlConfiguration();
    123. // loadYamls();
    124.  
    125. System.out.println("[AntiAddict] AntiAddict has been enabled!");
    126.  
    127.  
    128. this.pm = getServer().getPluginManager();
    129.  
    130. this.pm.registerEvents(this.playerListener, this);
    131. }
    132.  
    133. public void loadConfiguration(){
    134. getConfig().options().header("AntiAddict v1.6.1 Config");
    135. getConfig().addDefault("AntiAddict.Timelimit", 300);
    136. getConfig().addDefault("AntiAddict.LimitKickMessage", "You should spend more time in real-life!");
    137. getConfig().addDefault("AntiAddict.LimitAll", false);
    138. getConfig().addDefault("JoinMessage.Part1", "You were marked as addicted, so your playtime is limited to");
    139. getConfig().addDefault("JoinMessage.Part2", "minutes per day.");
    140. getConfig().addDefault("KickMessage.Part1", "You have hardly any time left! Prepare to be kicked.");
    141. getConfig().addDefault("KickMessage.Part2", "See you next time!");
    142. getConfig().addDefault("AntiAddict.PermissionsWarningOnStartup", true);
    143. if (getConfig().getList("Addicts") == null) {
    144. getConfig().set("Addicts", Arrays.asList(Addictlist));
    145. }
    146. addicts = getConfig().getStringList("Addicts");
    147. joinmessagePart1 = getConfig().getString("JoinMessage.Part1");
    148. joinmessagePart2 = getConfig().getString("JoinMessage.Part2");
    149. kickmessagePart1 = getConfig().getString("KickMessage.Part1");
    150. kickmessagePart2 = getConfig().getString("KickMessage.Part2");
    151. permissionsWarning = getConfig().getBoolean("AntiAddict.PermissionsWarningOnStartup");
    152.  
    153. timelimit = getConfig().getInt("AntiAddict.Timelimit");
    154. limitkickmessage = getConfig().getString("AntiAddict.LimitKickMessage");
    155.  
    156. limitall = getConfig().getBoolean("AntiAddict.LimitAll");
    157.  
    158. timelimitmil = timelimit * 60000L;
    159. //See "Creating you're defaults"
    160. getConfig().options().copyDefaults(true); // NOTE: You do not have to use "plugin." if the class extends the java plugin
    161. //Save the config whenever you manipulate it
    162. saveConfig();
    163. }
    164.  
    165. // private void firstRun()
    166. // throws Exception
    167. // {
    168. // if (this.configFile.exists())
    169. // {
    170. // return;
    171. // }
    172. // System.out
    173. // .println("[AntiAddict] AntiAddict is run for the first time...");
    174. // System.out.println("[AntiAddict] No Config found!");
    175. // System.out.println("[AntiAddict] Creating default Config!");
    176.  
    177. // this.configFile.getParentFile().mkdirs();
    178.  
    179. // copy(getResource("config.yml"), this.configFile);
    180.  
    181. // System.out
    182. // .println("[AntiAddict] Default Config was created successfully!");
    183. // }
    184.  
    185. // private void copy(InputStream in, File file)
    186. // {
    187. // try {
    188. // OutputStream out = new FileOutputStream(file);
    189. // byte[] buf = new byte[1024];
    190. // @SuppressWarnings("unused")
    191. //int len;
    192. // while ((len = in.read(buf)) != -1)
    193. // {
    194. // int len1 = 0;
    195. // out.write(buf, 0, len1);
    196. // }
    197. // out.close();
    198. // in.close();
    199. // }
    200. // catch (Exception e)
    201. // {
    202. // e.printStackTrace();
    203. // }
    204. // }
    205.  
    206. /* public void loadYamls()
    207.  {
    208.   try {
    209.   this.config.load(this.configFile);
    210.  
    211.   joinmessagePart1 = this.config.getString("JoinMessage.Part1");
    212.   joinmessagePart2 = this.config.getString("JoinMessage.Part2");
    213.  
    214.   timelimit = this.config.getInt("AntiAddict.Timelimit");
    215.   limitkickmessage = this.config.getString("AntiAddict.LimitKickMessage");
    216.   addicts = this.config.getList("Addicts");
    217.  
    218.   limitall = this.config.getBoolean("AntiAddict.LimitAll");
    219.  
    220.   timelimitmil = timelimit * 60000L;
    221.  
    222.   System.out.println("[AntiAddict] Config has been loaded successfully!");
    223.   } catch (Exception e) {
    224.   e.printStackTrace();
    225.   System.out.println("[AntiAddict] No Config found!");
    226.   }
    227.  }
    228.  
    229.  public void saveYamls()
    230.  {
    231.   try
    232.   {
    233.   this.config.save(this.configFile);
    234.   }
    235.   catch (IOException e)
    236.   {
    237.   e.printStackTrace();
    238.   }
    239.  }
    240. */@EventHandler(priority = EventPriority.HIGHEST)
    241. public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args)
    242. {
    243. if (cmd.getName().equalsIgnoreCase("timeleft") && sender.hasPermission("antiaddict.lefttime")){
    244. showTimeLeft(sender);
    245. return true;
    246. }
    247.  
    248. else if (cmd.getName().equalsIgnoreCase("reload")){
    249. System.out.println("Plugin got saved!");
    250. getServer().getPluginManager().disablePlugin(this);
    251. getServer().getPluginManager().enablePlugin(this);
    252.  
    253. }
    254. else if (!cmd.getName().equalsIgnoreCase("antiaddict")) {
    255. return false;
    256. }
    257.  
    258. else if (cmd.getName().equalsIgnoreCase("timeleft") && sender.hasPermission("antiaddict.lefttime")){
    259. showTimeLeft(sender);
    260. return true;
    261. }
    262. else if (args.length <= 0) {
    263. showUsage(sender);
    264. return true;
    265. }
    266. else if (args[0].equalsIgnoreCase("on")&& sender.hasPermission("antiaddict.admin")) {
    267. enableAntiAddict(sender);
    268. return true;
    269. }
    270. else if (args[0].equalsIgnoreCase("off") && sender.hasPermission("antiaddict.admin")){
    271. disableAntiAddict(sender);
    272. return true;
    273. }
    274. else if (args[0].equalsIgnoreCase("config") && args[1].equalsIgnoreCase("reload") && sender.hasPermission("antiaddict.admin")){
    275. reloadConfig();
    276. saveConfig();
    277. sender.sendMessage(ChatColor.AQUA + "[AntiAddict] Config reloaded!");
    278. return true;
    279. }
    280. else if (args[0].equalsIgnoreCase("config") && sender.hasPermission("antiaddict.admin")){
    281. sender.sendMessage(ChatColor.AQUA + "[AntiAddict] Correct usage: /antiaddict config reload!");
    282. return true;
    283. }
    284. else if (args[0].equalsIgnoreCase("left") && sender.hasPermission("antiaddict.lefttime")){
    285. showTimeLeft(sender);
    286. return true;
    287. }
    288. else if (args[0].equalsIgnoreCase("commands") && sender.hasPermission("antiaddict.admin")){
    289. showUsage(sender);
    290. return true;
    291. }
    292. else if (args[0].equalsIgnoreCase("about") && sender.hasPermission("antiaddict.admin")){
    293. sender.sendMessage(ChatColor.GOLD + "--- [AntiAddict] ---");
    294. sender.sendMessage(ChatColor.AQUA + "Welcome, " + sender.getName() + ", to the AntiAddict About!");
    295. sender.sendMessage(ChatColor.AQUA + "Version of AntiAddict: " + ChatColor.BLUE + getDescription().getVersion());
    296. sender.sendMessage(ChatColor.AQUA + "Developer of AntiAddict: " + ChatColor.BLUE + developers);
    297. sender.sendMessage(ChatColor.AQUA + "Thanks for Phiwa (original developer) for the code. He couldn't update anymore. ");
    298. sender.sendMessage(ChatColor.AQUA + "Last updated: " + ChatColor.BLUE + date);
    299. sender.sendMessage(ChatColor.AQUA + "Thank you for using AntiAddict plugin.");
    300. sender.sendMessage(ChatColor.AQUA + "Any questions? Send them to [email][email protected][/email]");
    301. return true;
    302. }
    303. else if (args.length == 3) {
    304. if (args[0].equalsIgnoreCase("addicts") && sender.hasPermission("antiaddict.addicts.remove") && args[1].equalsIgnoreCase("remove"))
    305. {
    306. if (args[2] != null) {
    307. if(getConfig().getList("Addicts").contains(args[2])) {
    308. getConfig().getList("Addicts").remove(args[2]);
    309. saveConfig();
    310. sender.sendMessage(ChatColor.GOLD+ "--- [AntiAddict] ---");
    311. sender.sendMessage(ChatColor.AQUA + "You have removed " + args[2] + " from the list of addicts!");
    312. return true;
    313. }
    314. else {
    315. sender.sendMessage(ChatColor.GOLD + "--- [AntiAddicts] ---");
    316. sender.sendMessage(ChatColor.AQUA + "This player is not in the list of addicts!");
    317. }
    318. }
    319. else {
    320. sender.sendMessage(ChatColor.GOLD+ "--- [AntiAddict] ---");
    321. sender.sendMessage(ChatColor.AQUA + "Not enough arguments!");
    322. }
    323. }
    324. else if (args[0].equalsIgnoreCase("addicts") && sender.hasPermission("antiaddict.addicts.add") && args[1].equalsIgnoreCase("add"))
    325. {
    326. @SuppressWarnings("unchecked")
    327. List<String> addicts = (List<String>) getConfig().getList("Addicts");
    328. addicts.add(args[2]);
    329. this.getConfig().set("Addicts", addicts);
    330. saveConfig();
    331. sender.sendMessage(ChatColor.GOLD+ "--- [AntiAddict] ---");
    332. sender.sendMessage(ChatColor.AQUA + "You have added " + args[2] + " to the list of addicts!");
    333. }
    334. }
    335. else if (args[0].equalsIgnoreCase("addicts") && sender.hasPermission("antiaddict.addicts")){
    336. sender.sendMessage(ChatColor.GOLD+ "--- [AntiAddict] ---");
    337. sender.sendMessage(ChatColor.AQUA + "Addicts: " + getConfig().getList("Addicts").toString());
    338. return true;
    339. }
    340. else {
    341. sender.sendMessage(ChatColor.GOLD+ "--- [AntiAddict] ---");
    342. sender.sendMessage(ChatColor.AQUA + "Error while finding command! Have you got the permission?");
    343. return true;
    344. }
    345. return true;
    346. }
    347.  
    348. private void showUsage(CommandSender sender) {
    349. sender.sendMessage(ChatColor.GOLD+ "--- [AntiAddict] ---");
    350. sender.sendMessage(ChatColor.GOLD + "Commands:");
    351. sender.sendMessage(ChatColor.AQUA + "/antiaddict on" + ChatColor.GRAY +
    352. " - Enables AntiAddict.");
    353. sender.sendMessage(ChatColor.AQUA + "/antiaddict off" + ChatColor.GRAY +
    354. " - Disables AntiAddict.");
    355. sender.sendMessage(ChatColor.AQUA + "/antiaddict left" + ChatColor.GRAY +
    356. " - Shows how much time you have left before getting kicked.");
    357. sender.sendMessage(ChatColor.AQUA + "/antiaddict about" + ChatColor.GRAY +
    358. " - Shows all helpful information about AntiAddict.");
    359. sender.sendMessage(ChatColor.AQUA + "/antiaddict config reload" + ChatColor.GRAY +
    360. " - Reloads AntiAddict's config.");
    361. sender.sendMessage(ChatColor.AQUA + "/antiaddict commands" + ChatColor.GRAY +
    362. " - Shows all the commands being used.");
    363. sender.sendMessage(ChatColor.AQUA + "/antiaddict addicts" + ChatColor.GRAY +
    364. " - Shows all the addicts.");
    365. sender.sendMessage(ChatColor.AQUA + "/antiaddict addicts remove <player>" + ChatColor.GRAY +
    366. " - Removes specified player from addicts list.");
    367. sender.sendMessage(ChatColor.AQUA + "/antiaddict addicts add <player>" + ChatColor.GRAY +
    368. " - Adds specified player to addicts list.");
    369. }
    370.  
    371. private void showTimeLeft(CommandSender sender)
    372. {
    373. if ((sender instanceof Player)) {
    374. Player player = ((Player)sender).getPlayer();
    375. String playername = player.getName();
    376.  
    377. if (((AntiAddict.limitall) || (AntiAddict.addicts.contains(playername))) &&
    378. (!player.hasPermission("antiaddict.ignorelimits")))
    379. {
    380.  
    381.  
    382. this.currenttime = System.currentTimeMillis();
    383. this.jointime = ((Long)Players.jointimesave.get(playername)).longValue();
    384. try {
    385. this.playtimeold = ((Long)Players.playtimesave.get(playername)).longValue();
    386. } catch (NullPointerException nfe) {
    387. Players.playtimesave.put(playername, Long.valueOf(0L));
    388. this.playtimeold = ((Long)Players.playtimesave.get(playername)).longValue();
    389. }
    390.  
    391. this.playtime = (this.playtimeold + (this.currenttime - this.jointime));
    392. long resttime = (AntiAddict.timelimitmil - this.playtime) / 60000;
    393. //this.playtime = (this.playtimeold + (this.currenttime - this.jointime));
    394.  
    395. //long resttime = (timelimit - this.playtime) / 100L;
    396. if (resttime < 1) {
    397. player.sendMessage(ChatColor.GOLD+ "--- [AntiAddict] ---");
    398. player.sendMessage(ChatColor.AQUA + "You have " + resttime + " minutes left today!");
    399. player.sendMessage(ChatColor.AQUA + "You will be kicked shortly!");
    400. }
    401. else if (resttime == 1) {
    402. player.sendMessage(ChatColor.GOLD+ "--- [AntiAddict] ---");
    403. player.sendMessage(ChatColor.AQUA + "You have " + resttime + " minute left today!");
    404. player.sendMessage(ChatColor.AQUA + "You will be kicked shortly!");
    405. }
    406. else {
    407. player.sendMessage(ChatColor.GOLD+ "--- [AntiAddict] ---");
    408. player.sendMessage(ChatColor.AQUA + "You have " + resttime + " minutes left today!");
    409. }
    410.  
    411. }
    412. else {
    413. sender.sendMessage(ChatColor.AQUA + "You are not listed as addicted.");
    414. sender.sendMessage(ChatColor.AQUA + "Keep it up!");
    415. }
    416. }
    417. else {
    418. System.out.println("This command can only be used ingame!");
    419. }
    420. }
    421.  
    422. private void enableAntiAddict(CommandSender sender) {
    423. if ((sender.hasPermission("antiaddict.admin")) || (sender.isOp())) {
    424. if (status == false) {
    425. status = true;
    426. sender.sendMessage(ChatColor.GOLD+ "--- [AntiAddict] ---");
    427. sender.sendMessage(ChatColor.AQUA + "AntiAddict has been enabled!");
    428. }
    429. else {
    430. sender.sendMessage(ChatColor.GOLD+ "--- [AntiAddict] ---");
    431. sender.sendMessage(ChatColor.AQUA + "AntiAddict has already been enabled!");
    432. }
    433. } else {
    434. sender.sendMessage(ChatColor.GOLD+ "--- [AntiAddict] ---");
    435. sender.sendMessage(ChatColor.AQUA + "You are no Admin...");
    436. }
    437. }
    438.  
    439. private void disableAntiAddict(CommandSender sender) {
    440. if ((sender.hasPermission("antiaddict.admin")) || (sender.isOp())) {
    441. if (status == true) {
    442. status = false;
    443. sender.sendMessage(ChatColor.GOLD+ "--- [AntiAddict] ---");
    444. sender.sendMessage(ChatColor.AQUA + "Antiaddict has been disabled!");
    445. }
    446. else {
    447. sender.sendMessage(ChatColor.GOLD+ "--- [AntiAddict] ---");
    448. sender.sendMessage(ChatColor.AQUA + "Antiaddict has already been disabled!");
    449. }
    450. }else
    451. {
    452. sender.sendMessage(ChatColor.GOLD+ "--- [AntiAddict] ---");
    453. sender.sendMessage(ChatColor.AQUA + "You are no Admin...");
    454. }
    455. }
    456. }
    457.  
    458.  


    And this is my 'Players.java':

    Code:java
    1.  
    2. package me.staartvin.AntiAddict;
    3.  
    4. import java.util.HashMap;
    5. import java.util.Timer;
    6. import org.bukkit.ChatColor;
    7. import org.bukkit.GameMode;
    8. import org.bukkit.entity.Player;
    9. import org.bukkit.event.EventHandler;
    10. import org.bukkit.event.Listener;
    11. import org.bukkit.event.player.PlayerJoinEvent;
    12. import org.bukkit.event.player.PlayerMoveEvent;
    13. import org.bukkit.event.player.PlayerQuitEvent;
    14. import me.staartvin.AntiAddict.AntiAddict;
    15.  
    16. public class Players implements Listener
    17. {
    18. public static GameMode mode;
    19. public static ChatColor red = ChatColor.RED;
    20. public static ChatColor green = ChatColor.GREEN;
    21. public static ChatColor white = ChatColor.WHITE;
    22.  
    23. public static HashMap<String, Long> jointimesave = new HashMap<String, Long>();
    24.  
    25. public static HashMap<String, Long> resttimelist = new HashMap<String, Long>();
    26.  
    27. public static HashMap<String, Long> playtimesave = new HashMap<String, Long>();
    28.  
    29. public static HashMap<String, Boolean> warnMessagesave = new HashMap<String, Boolean>();
    30. long jointime;
    31. long playtime;
    32. long currenttime;
    33. long playtimeold;
    34. Timer timer = new Timer();
    35. AntiAddict plugin;
    36. boolean warnMessage;
    37.  
    38. public void Players2(AntiAddict plugin)
    39. {
    40. this.plugin = plugin;
    41. }
    42. @EventHandler
    43. public void onPlayerJoin(PlayerJoinEvent event)
    44. {
    45. Player player = event.getPlayer();
    46. String playername = player.getName();
    47.  
    48. if (AntiAddict.status)
    49. {
    50. if (AntiAddict.addicts.contains(playername)) //(AntiAddict.addicts.contains(playername)) || (AntiAddict.limitall))
    51. {
    52. warnMessagesave.put(playername, false);
    53. this.jointime = System.currentTimeMillis();
    54. jointimesave.put(playername, Long.valueOf(this.jointime));
    55.  
    56. System.out.println("[AntiAddict] The player " + playername + " just logged in.");
    57. System.out.println("[AntiAddict] (S)he was marked as addicted, so his/her playtime");
    58. System.out.println("[AntiAddict] is restricted to " + AntiAddict.timelimit + " minutes.");
    59. player.sendMessage(ChatColor.GOLD+ "--- [AntiAddict] ---");
    60. player.sendMessage(ChatColor.AQUA + AntiAddict.joinmessagePart1 + " " + ChatColor.AQUA + AntiAddict.timelimit + ChatColor.AQUA + " " + AntiAddict.joinmessagePart2);
    61. }
    62. else {
    63.  
    64. }
    65. }
    66. }
    67. @EventHandler
    68. public void onPlayerQuit(PlayerQuitEvent event)
    69. {
    70. Player player = event.getPlayer();
    71. String playername = player.getName();
    72.  
    73. if (AntiAddict.status)
    74. {
    75. if ((AntiAddict.addicts.contains(playername)) || (AntiAddict.limitall))
    76. {
    77. playtimesave.put(playername, Long.valueOf(this.playtime));
    78. warnMessagesave.put(playername, false);
    79. }
    80. }
    81. }
    82. @EventHandler
    83. public void onPlayerMove(PlayerMoveEvent event)
    84. {
    85. Player player = event.getPlayer();
    86. String playername = player.getName();
    87.  
    88. if (AntiAddict.status)
    89. {
    90. if (((AntiAddict.limitall) || (AntiAddict.addicts.contains(playername))) &&
    91. (!player.hasPermission("antiaddict.ignorelimits")))
    92. {
    93. this.currenttime = System.currentTimeMillis();
    94. try {
    95. this.jointime = ((Long)jointimesave.get(playername)).longValue();
    96. this.playtimeold = ((Long)playtimesave.get(playername)).longValue();
    97. } catch (NullPointerException nfe) {
    98. this.jointime = ((Long)jointimesave.get(playername)).longValue();
    99. playtimesave.put(playername, Long.valueOf(0L));
    100. this.playtimeold = ((Long)playtimesave.get(playername)).longValue();
    101. }
    102.  
    103. this.playtime = (this.playtimeold + (this.currenttime - this.jointime));
    104. long resttime = (AntiAddict.timelimitmil - this.playtime);
    105.  
    106. resttimelist.put(playername, Long.valueOf(resttime));
    107.  
    108. if (resttime/60000 < 1 && warnMessagesave.get(playername)){
    109. warnMessagesave.put(playername, true);
    110. player.sendMessage(ChatColor.GOLD+ "--- [AntiAddict] ---");
    111. player.sendMessage(ChatColor.AQUA + AntiAddict.kickmessagePart1);
    112. player.sendMessage(ChatColor.AQUA + AntiAddict.kickmessagePart2);
    113. }
    114. if (resttime/60000 <= 0) {
    115. player.kickPlayer(AntiAddict.limitkickmessage);
    116. warnMessagesave.put(playername, false);
    117.  
    118. System.out.println("[AntiAddict] " + playername + " reached his/her daily limit and was kicked into RL again.");
    119. }
    120. }
    121. }
    122. }
    123. }
    124.  


    Thanks in advance!
     
  2. Offline

    Craftiii4

    I have never used this before

    So this might be the problem? try removing this and trying, if not copy your onEnable to here?

    Code:java
    1. public void onReload()
    2. {
    3.  
    4. }
     
  3. Offline

    Staartvin

    That was just for the test, it doesn't do anything as I understand because it's not a part of the Bukkit API.
    It was just there for testing purposes.

    bump. Anyone?

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: May 25, 2016
  4. Offline

    ItsHarry

  5. Offline

    Staartvin

  6. Offline

    ItsHarry

    Fine, anyways..
    The problem is you're trying to get the player from playtimesave, but if you look at the code when a player joins, he's never actually added to playtimesave.
     
    Deleted user likes this.
  7. Offline

    Staartvin

    But why does it work in the first place then?
     
  8. Offline

    ItsHarry

    I don't know, you obviously did something wrong.
    The real question is, why use onPlayerMove, why not use the Bukkit scheduler to schedule a delayed task instead?
     
  9. Offline

    Staartvin

    That's indeed a good question. I've searched the whole interwebs but I coudn't find a tutorial I'd understand. I can't get it to work. I've looked up many websites and also the wiki but I coudn't understand. Although I have tried to use it several times but it kept going wrong so I decided to use this instead. If you have a very good tutorial, please show me!
     
  10. Offline

    ItsHarry

    http://wiki.bukkit.org/Scheduler_Programming
     
Thread Status:
Not open for further replies.

Share This Page