if (plugin.bans.getBoolean("User." + niceName + ".tempban")){ long uT = System.currentTimeMillis() / 1000L; long bT = plugin.bans.getLong("User." + niceName + ".tempban.bantime"); long dur = plugin.bans.getLong("User." + niceName + ".tempban.duration"); if ((uT - bT) > dur){ plugin.log.info("User: " + playerName.getName() + " >> Temp-ban duration has expired, unbanning."); List<String> tbList = plugin.banned.getStringList("Users"); tbList.remove(niceName); plugin.banned.set("Users", tbList); try{ plugin.banned.save(plugin.bannedFile); }catch (IOException e){ e.printStackTrace(); } plugin.log.info(playerName.getName() + " logged in from " + ip); event.setResult(Result.ALLOWED); return; } else{ //float length = (dur - (uT - bT)) / 60; event.setKickMessage("You are temporarily banned. Check back later."); event.setResult(Result.KICK_OTHER); plugin.log.info (playerName.getName() + " tried logging in while temp banned."); return; } }This code for some reason returns a memory section message for the KickMessage rather than what is specified. So maybe my math is just jacked up or I'm handling the long datatype improperly. Thought I'd ask @.@ Thanks in advance!
Problem with longs (Java/Bukkit)
Problem with longs (Java/Bukkit)
I've decided to implement temp banning. And because the Unix timestamp is easier to use for calculations, I'm using that, and apparently it's best to use the "long" datatype in Java or you'll get some sort of 2038 problem. But having said that, I'm having a problem, and I'm about completely lost on how to fix it. Firstly, here's the code:
Re: Problem with longs (Java/Bukkit)
It looks okay to me at first glance. Are you sure you are always dividing the time by 1000 ?
What is the message you are getting ?
What is the message you are getting ?
Re: Problem with longs (Java/Bukkit)
Made a bit of a dumb mistake XD I don't have a tempban node in my bans file yet @.@ I stared at the code for yours trying to figure out what dafuq was wrong with it T.T But I'll give ya the message, fix that problem, and see if it helps.
Message on kick:
Message on kick:
Disconnected by Server MemorySection[path='User.someone', root='YamlConfiguration']^^^^ The test user being kicked is "someone" btw.
Re: Problem with longs (Java/Bukkit)
Well, I was right XD But it turns out there were a few spots where the node in the yml file just didn't exist or I had it nested under a node that didn't exist @.@ I really gotta stop working on this while I'm half asleep T.T Thanks anyways XD
Re: Problem with longs (Java/Bukkit)
Oh right ! That looks a bit like a getConfigSection().toString() to me.
You should really make sure a default gets used for everything if the config file is broken, I have found that people love to delete stuff from the .yml files for some reason.
You should really make sure a default gets used for everything if the config file is broken, I have found that people love to delete stuff from the .yml files for some reason.
Re: Problem with longs (Java/Bukkit)
oh, so just check if a certain node exists than set it to something if not? I'll try to work something like that in O.o I did have a problem with my plugin breaking if there are no users saved in users.yml, so I had to insert a placeholder user and IP address so it didn't spit out console errors every time someone joined. @.@
Re: Problem with longs (Java/Bukkit)
I think you can specify a default value
String something = config.getString("path.to.the.string", "a fallback value");you could with the old config system anyway.
What was the error ? You probably needed to catch the case where there were no users and stop checking.offluffy wrote:I did have a problem with my plugin breaking if there are no users saved in users.yml, so I had to insert a placeholder user and IP address so it didn't spit out console errors every time someone joined. @.@
Re: Problem with longs (Java/Bukkit)
Oh yes, I've used that a few times before. Here's the error I was getting:
2012-03-29 08:15:49 [SEVERE] Could not pass event PlayerLoginEvent to Blip org.bukkit.event.EventException at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:303) at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:459) at net.minecraft.server.ServerConfigurationManager.attemptLogin(ServerConfigurationManager.java:226) at net.minecraft.server.NetLoginHandler.b(NetLoginHandler.java:102) at net.minecraft.server.NetLoginHandler.a(NetLoginHandler.java:94) at net.minecraft.server.Packet1Login.handle(SourceFile:68) at net.minecraft.server.NetworkManager.b(NetworkManager.java:229) at net.minecraft.server.NetLoginHandler.a(NetLoginHandler.java:48) at net.minecraft.server.NetworkListenThread.a(NetworkListenThread.java:61) at net.minecraft.server.MinecraftServer.w(MinecraftServer.java:554) at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:452) at net.minecraft.server.ThreadServerApplication.run(SourceFile:490) Caused by: java.lang.NullPointerException at me.offluffy.blip.LoginListener.onPlayerLogin(LoginListener.java:37) 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.java:301) ... 12 moreIt was popping out an error because the plugin was trying to fetch the Configuration Section from a node, and if that node was empty, it would error out and stop executing the code. And as a temp fix, I decided to add a temporary node under it so it wouldn't completely stop the plugin from working. Come to think of it, I don't exactly know how to fix that. Because I usually fetch the configuration section and check to see what's in it. And it can't if it's empty. Got a way around that? I'd rather not just add a fake node on every run XD
Re: Problem with longs (Java/Bukkit)
The key bit is this
There is an unexpected null on line 37, so see what is on line 37 and think about what could be null. It will probably be the result of getConfigSection(). you can just check it against null to seeCaused by: java.lang.NullPointerException at
me.offluffy.blip.LoginListener.onPlayerLogin(LoginListener.java:37)
ConfigSection thingy = config.getConfigSection(playerName); if (thingy == null){ // add a default and return. } // down here we know that thingy is not null.
Re: Problem with longs (Java/Bukkit)
I'll give that a shot then XD Later when I'm awake enough to comprehend stuff. I know it was the Conf. Section that was null, just didn't think to check for ==null before, thanks @.@