NoLagg

Version: 1.90.4 | CB 1.7.2
Quote from lenis0012:NoLagg has not been updated since 1.7.10, for more info, check BKCommonLib
Description
NoLagg is made out of multiple completely separate components which you can enable and disable freely. Together they offer:
- Send chunks more gracefully with lowered network stress and reduced processing spikes Read more...
- Remove entities, resend chunks in case of chunk holes and clean up server memory Read more...
- Examine server tick rate performance with deep view into per-tick processes of the server Read more...
- Stop a large amount of items from spawning and spawn at a later time to avoid frozen clients Read more...
- Stack items with a configurable per-world radius Read more...
- Fix lighting errors that cause clients to recalculate lighting (and thus lag) Read more...
- Keep track of server performance such as entities, tick rate, memory and more Read more...
- Fix various bugs the server has (Patches component)
- Schedule autosaves and force data to be written to disk to prevent data loss on server crash (Saving component)
- Limit the amount of entities allowed to spawn per world or globally Read more...
- Watch events closely to warn when plugins execute main-thread methods from another thread Read more...
- Show a detailed message explaining the cause for a server freeze (lock) [read more]
- New TNT execution algortithm that is not only more efficient, but also avoids server freezes Read more...
Important
When first installing NoLagg, open up config.yml and disable components you do not need. This is very important, as some components may conflict with other plugins you use, or may not function on the type of demand you have. If you get a warning message [Severe] followed up with a stack trace in the log, this has to do with the main thread not having responded within 10 seconds. The warning is NOT an error and is no bug, and not a bug related to NoLagg. To disable this feature, disable 'threadlocknotifier' in the config.yml. This feature is mainly intended to notify you what plugin is causing the server to freeze, may it ever happen. It is used to debug plugins in general, as they may get stuck for whatever reason. If NoLagg DOES show up in there, it is a bug you should report.
FAQ
Separating into jar files
NoLagg consists of multiple components you can individually enable and disable. Reasons for not publishing it as a separate jar file for every component can be read here. Please don't ask to separate the components, I will just link you to here.
Spigot server
Not all components are needed when you use the Spigot server. The ItemStacker, ItemBuffer, Spawn Limiter, Thread Checker and Thread Lock Notifier components are not needed, since Spigot has it's own implementations to deal with that. If you still wish to use one of these components, you can, but it's best to disable the Spigot alternative then.
The other components (such as TNT, Chunks, Lighting, Common, etc.) are not implemented in Spigot (yet?) and offer additional functionality.
PTweaks
Since people keep asking about this, I went ahead and compared the two plugins. I am not going to discuss which is better in functionality, I'm just going to state which features overlap and which do not. Both plugins offer a TNT-lag solving solution, feel free to choose which solution you like better. (the solutions are different) Both plugins also offer a way to change when and how chunks are saved, NoLagg adds to this that you can configure when the server writes data to disk. PTweaks offers a way of showing used memory, NoLagg Monitor too with a bit more information. Again, preference. Chunk Persistence is something PTweaks offers and NoLagg does not. Reason I excluded it from NoLagg is that the implementation used up more processing power than that it solved (I did have this for a while). If you want to give it a try, PTweaks is your answer. Monster Limiter is incorporated in NoLagg as well but then for all entities, and more options. ChunkEdits is a tricky one: NoLagg chunks does something similar, with the difference being that it also changes at what rate chunks are sent, which is the main feature NoLagg chunks offers. In addition, the ability to increase the amount of threads running to process chunk packets and the re-using of packet raw data offers some benefits PTweaks does not offer.
Then there are a lot of other features NoLagg has and PTweaks does not, such as examining server tick rate, item stacker, item buffer, fixing lighting, cleaning up server memory, resending chunks, removing entities on command and others (see description).
In short: Both plugins offer some overlapping features, and you need to pay close attention to the configuration of PTweaks and NoLagg and disable things that conflict. Having two TNT explosion altering plugins is going to have strange results, for example. Compare the functionality, decide, and enable in NoLagg what you do not want in PTweaks, and vice versa.
NoLagg showing up in error stack traces
The examine component inserts various hooks into the server to gather measurements. Specifically, you will find that the following lines show up now and then. These hook classes do absolutely nothing when not examining and can not be the cause for any issues, unless the stack trace ends there (first line after the exception shows this stack trace)
- org.timedbukkit.craftbukkit.*
- com.bergerkiller.bukkit.common.internal.ChunkProviderServerHook
Video
Here is a video by BlueDevonMovies (lenis0012):
Metrics
This plugin sends server count statistics to MCStats.org. You can (globally) opt out in the PluginMetrics/config.yml file.







-
View User Profile
-
Send Message
Posted Mar 26, 2012@ThoLav Do you get any 'Synchronized code accessed from another thread' warnings, and if not, do you have the main NoLagg.jar installed? It can detect these issues easily. (right now it appears to be a cross-thread chunk load issue)
I can add some synchronization around it all, though it really is a bug in another plugin.
@QweSteR2221 I don't see why NoLagg would have anything to do with this really....it is a long error, I give you that, but I don't see NoLagg in the name at all. Are you sure it's not a bug in ExtraFurnaces itself? Did you try running without NoLagg, or without certain components installed?
-
View User Profile
-
Send Message
Posted Mar 26, 2012Error occures that ExtrafuFurnaces was deleted from server.
http://dev.bukkit.org/server-mods/nolagg/
http://forums.spout.org/threads/fun-mech-extrafurnaces-0-9-8-spn1003-sc1248-cb1-2-3-r0-3.287/
CraftBukkit: 2117 (1.2.4-R0.1)
SpoutPlugin: 1045
SpoutCraft: 1278
NoLagg v1.81
Extra Furnaces v.1.0.0
2012-03-26 16:58:54 [INFO] NoLagg version 1.81 enabled!
2012-03-26 16:58:54 [INFO] Preparing level "world"
2012-03-26 16:58:54 [INFO] Default game type: 0
2012-03-26 16:58:54 [INFO] Preparing start region for level 0 (Seed: 3425781423350423041)
2012-03-26 16:58:55 [SEVERE] java.lang.ClassNotFoundException: org.dyndns.pamelloes.ExtraFurnaces.data.DiamondFurnaceData
2012-03-26 16:58:55 [SEVERE] at java.net.URLClassLoader$1.run(Unknown Source)
2012-03-26 16:58:55 [SEVERE] at java.security.AccessController.doPrivileged(Native Method)
2012-03-26 16:58:55 [SEVERE] at java.net.URLClassLoader.findClass(Unknown Source)
2012-03-26 16:58:55 [SEVERE] at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:41)
2012-03-26 16:58:55 [SEVERE] at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:29)
2012-03-26 16:58:55 [SEVERE] at java.lang.ClassLoader.loadClass(Unknown Source)
2012-03-26 16:58:55 [SEVERE] at java.lang.ClassLoader.loadClass(Unknown Source)
2012-03-26 16:58:55 [SEVERE] at java.lang.Class.forName0(Native Method)
2012-03-26 16:58:55 [SEVERE] at java.lang.Class.forName(Unknown Source)
2012-03-26 16:58:55 [SEVERE] at java.io.ObjectInputStream.resolveClass(Unknown Source)
2012-03-26 16:58:55 [SEVERE] at java.io.ObjectInputStream.readNonProxyDesc(Unknown Source)
2012-03-26 16:58:55 [SEVERE] at java.io.ObjectInputStream.readClassDesc(Unknown Source)
2012-03-26 16:58:55 [SEVERE] at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source)
2012-03-26 16:58:55 [SEVERE] at java.io.ObjectInputStream.readObject0(Unknown Source)
2012-03-26 16:58:55 [SEVERE] at java.io.ObjectInputStream.readObject(Unknown Source)
2012-03-26 16:58:55 [SEVERE] at java.util.HashMap.readObject(Unknown Source)
2012-03-26 16:58:55 [SEVERE] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
2012-03-26 16:58:55 [SEVERE] at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
2012-03-26 16:58:55 [SEVERE] at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
2012-03-26 16:58:55 [SEVERE] at java.lang.reflect.Method.invoke(Unknown Source)
2012-03-26 16:58:55 [SEVERE] at java.io.ObjectStreamClass.invokeReadObject(Unknown Source)
2012-03-26 16:58:55 [SEVERE] at java.io.ObjectInputStream.readSerialData(Unknown Source)
2012-03-26 16:58:55 [SEVERE] at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source)
2012-03-26 16:58:55 [SEVERE] at java.io.ObjectInputStream.readObject0(Unknown Source)
2012-03-26 16:58:55 [SEVERE] at java.io.ObjectInputStream.readObject(Unknown Source)
2012-03-26 16:58:55 [SEVERE] at org.getspout.spoutapi.chunkstore.ChunkMetaData.readMap(ChunkMetaData.java:409)
2012-03-26 16:58:55 [SEVERE] at org.getspout.spoutapi.chunkstore.ChunkMetaData.readObject(ChunkMetaData.java:355)
2012-03-26 16:58:55 [SEVERE] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
2012-03-26 16:58:55 [SEVERE] at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
2012-03-26 16:58:55 [SEVERE] at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
2012-03-26 16:58:55 [SEVERE] at java.lang.reflect.Method.invoke(Unknown Source)
2012-03-26 16:58:55 [SEVERE] at java.io.ObjectStreamClass.invokeReadObject(Unknown Source)
2012-03-26 16:58:55 [SEVERE] at java.io.ObjectInputStream.readSerialData(Unknown Source)
2012-03-26 16:58:55 [SEVERE] at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source)
2012-03-26 16:58:55 [SEVERE] at java.io.ObjectInputStream.readObject0(Unknown Source)
2012-03-26 16:58:55 [SEVERE] at java.io.ObjectInputStream.readObject(Unknown Source)
2012-03-26 16:58:55 [SEVERE] at org.getspout.spoutapi.chunkstore.ChunkStore.readChunkMetaData(ChunkStore.java:56)
2012-03-26 16:58:55 [SEVERE] at org.getspout.spoutapi.chunkstore.SimpleChunkDataManager.getMetaData(SimpleChunkDataManager.java:228)
2012-03-26 16:58:55 [SEVERE] at org.getspout.spoutapi.chunkstore.SimpleChunkDataManager.loadChunk(SimpleChunkDataManager.java:53)
2012-03-26 16:58:55 [SEVERE] at org.getspout.spoutapi.chunkstore.SimpleChunkDataManager.loadChunk(SimpleChunkDataManager.java:49)
2012-03-26 16:58:55 [SEVERE] at org.getspout.spout.SpoutWorldListener.onChunkLoad(SpoutWorldListener.java:52)
2012-03-26 16:58:55 [SEVERE] at sun.reflect.GeneratedMethodAccessor1.invoke(Unknown Source)
2012-03-26 16:58:55 [SEVERE] at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
2012-03-26 16:58:55 [SEVERE] at java.lang.reflect.Method.invoke(Unknown Source)
2012-03-26 16:58:55 [SEVERE] at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:301)
2012-03-26 16:58:55 [SEVERE] at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62)
2012-03-26 16:58:55 [SEVERE] at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:459)
2012-03-26 16:58:55 [SEVERE] at net.minecraft.server.ChunkProviderServer.getChunkAt(ChunkProviderServer.java:103)
2012-03-26 16:58:55 [SEVERE] at net.minecraft.server.MinecraftServer.a(MinecraftServer.java:346)
2012-03-26 16:58:55 [SEVERE] at net.minecraft.server.MinecraftServer.init(MinecraftServer.java:187)
2012-03-26 16:58:55 [SEVERE] at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:425)
2012-03-26 16:58:55 [SEVERE] at net.minecraft.server.ThreadServerApplication.run(SourceFile:490)
-
View User Profile
-
Send Message
Posted Mar 25, 2012Hi,
sometimes I find this error in server.log:
git-Bukkit-1.2.3-R0.2-90-ga9ae139-b2120jnks (MC: 1.2.4) NoLagg: the version that is available at this moment
-
View User Profile
-
Send Message
Posted Mar 25, 2012@darcueid 1st: Block CHANGES can not be made lag-free. It is due to the fact that everything runs on one thread.
2nd: Maybe they have added some sort of new 'feature' to it to queue further-away chunks too. My guess is that the Chunks add-on removes these chunks, causing them to be never sent at all. Look in the MaxTPS configuration if you can disable some of it.
@GumbyDammit Report the error to them...I should really remove the 'TimedWrapper' from the stack traces as it is very annoying to see it all the time. :)
-
View User Profile
-
Send Message
Posted Mar 24, 2012I'm getting this on startup with 1.2.4-R0.1-2117:
2012-03-24 17:23:57 [WARNING] Could not properly handle event CHUNK_LOAD: java.lang.IllegalAccessError: Synchronized code got accessed from another thread : com.bergerkiller.bukkit.nolagg.examine.TimedWrapper 2012-03-24 17:23:57 [INFO] This error is logged only once: it could have occurre d multiple times by now. 2012-03-24 17:23:57 [INFO] Please contact one of the authors of plugin 'NoLaggEx amine': bergerkiller
Edit: seems to be a conflict with the Volcano plugin. Error goes away when that specific plugin is disabled.
-
View User Profile
-
Send Message
Posted Mar 24, 2012Hi there,
1ST ISSUE: my friends and I are using a mod on our server that allows us to selected a large volume of blocks to build, destroy, or mine that large volume instantly. I've particularly noticed a lot of lag when using the mod to build large empty boxes. My question: is there a way to configure NoLagg to decrease the lag when instantly building empty boxes (filled boxes seem fine) or destroying a large volume of blocks? If there isn't, is it possible and could you create a feature in future versions of your mod that does help reduce lag for what I've described above? If that is not possible, then is there another mod that you can suggest that might help with this problem?
If I understand your plugin correctly the ItemBuffer feature of your mod would work for mining large volumes of blocks at once, but not with destroying or building large volumes. Am I correct in that?
If you need to know more on how the mod works to answer my question then please refer to this link. The video there will show how the mod works (my description above doesn't really do it any justice): http://www.planetminecraft.com/mod/magicwands/
2ND ISSUE: After a few minutes of moving around the world my friends and I will start see these long missing chunks in the world. You can see it here: http://img10.imageshack.us/img10/1064/withnolagg.jpg If we tried to just sit and wait the chunks still won't load. Only way we've been able to get them to show is by logging out and back, but then a few minutes later the long missing chunks appear again. I'm gonna try to reduce the maximum chunk sending rate and increase the trigger rate a little and to see if that will help. If you have any ideas on how to resolve this then please let me know.
Update 1: Disabling the MaxTPS plugin seems to have resolve the long missing chunks issue for me. Guess the plugins don't like each other. :)
FINAL WORDS: Also would like to say thank you very much for your mod. Its been really helpful for our private server, my friends and I are having a blast watching 20000+ blocks of TNT blow up and not getting any lag. Thank you for the work you've done. :)
Wow, I apologize for the huge comment I didn't realize how big it as until I posted it. Sorry. >.<
-
View User Profile
-
Send Message
Posted Mar 24, 2012@bergerkiller
Yeah, his comment was something like "is his plugin fucking me again" or something like that... It was a few days ago lol
-
View User Profile
-
Send Message
Posted Mar 24, 2012@Puremin0rez Did you also report to the author of Orebfuscator? I simply call the 'obfuscate' function and let Orebfuscator do the rest, so there is not much I can explain...
-
View User Profile
-
Send Message
Posted Mar 24, 2012NoLagg Chunks is using Orebfuscator, however, the Cache folder for Orebfuscator is never created when both plugins are used.
-
View User Profile
-
Send Message
Posted Mar 24, 2012@kahlilnc Sigh...I'll re-upload it then with the correct version. You can download it with TrainCarts too.
-
View User Profile
-
Send Message
Posted Mar 23, 2012Says use BKCommonLib v1.18.jar but BKCommonLib v1.17.jar is in the zip folder :O
-
View User Profile
-
Send Message
Posted Mar 23, 2012@n3rdyguy Now uploaded version 1.81 which is compatible with build 2116
-
View User Profile
-
Send Message
Posted Mar 22, 2012Does this work for 1.2.4-R0.1 yet?
-
View User Profile
-
Send Message
Posted Mar 22, 2012@robbcap I don't wanna! *crosses arms*
Meh I'll look into it later, always want to see how things turn out without updating first. There are no 'chunk changing' bits anymore, so world corruption can't happen. (though be careful with NoLaggLighting, you never know when a field changes somehow)
-
View User Profile
-
Send Message
Posted Mar 22, 2012update the plugin to R3
-
View User Profile
-
Send Message
Posted Mar 22, 2012@deathnote1029 The 'TimedWrapper' is nothing more but a thin layer between the bukkit task and the actual operation. It does show up in the stack traces; afraid that is impossible to prevent.
-
View User Profile
-
Send Message
Posted Mar 22, 2012@ray73864
I get the Same problem on my server(l a lot of pissed of players losing diamond stuff lol) I however am unsure what causes it
Hope for a fix soon
Sorry for double post, can't edit on iPhone :P Still got the problem below though
-
View User Profile
-
Send Message
Posted Mar 22, 2012hey @bergerkiller im not sure whether its this plugin causing this error, but its better to be sure :)
gonna post the same thing on the logblock page to see if they can help too Thanks
deathnote1029
Edit: i should probably also mention that i was using 1.79 and running build 2070
i have updated to 1.80 and will watch for any errors and see if i get the same thing still.
Wanna know what the error above is caused by though :P
Thanks!
-
View User Profile
-
Send Message
Posted Mar 18, 2012If you want to test it, the server is at: mcaddictgallery.info
-
View User Profile
-
Send Message
Posted Mar 18, 2012NoLaggItemBuffer doesn't appear to be doing the right things, at least not on our server.
We have NoLaggItemStacker installed too which works perfectly, especially for EXP lag machines.
The buffer though, in creative mode, we dumped more than 128 entities into a single chunk, they started disappearing on their own, we then cleaned up the amount that was in there, and the others never appeared.
I deliberately made sure to throw a 64 stack of lapis out and it never appeared in our inventories.
Am i just doing something incredibly wrong?