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 1, 2012@dlzltg Uploaded 1.72, compatible with CB 2005
-
View User Profile
-
Send Message
Posted Mar 1, 2012Crash again
2-03-01 20:45:47 [INFO] [NoLagg] Performing remaining scheduled operations (1728) ...
2012-03-01 20:45:47 [SEVERE] Error occurred while disabling NoLagg v1.71 (Is it up to date?)
java.lang.NoSuchFieldError o
at com.bergerkiller.bukkit.nolagg.ChunkFixLightingOperation.fixBlockLighting(ChunkFixLightingOperation.java:71)
at com.bergerkiller.bukkit.nolagg.ChunkFixLightingOperation.run(ChunkFixLightingOperation.java:117)
at com.bergerkiller.bukkit.nolagg.OperationScheduler.run(OperationScheduler.java:58)
at com.bergerkiller.bukkit.nolagg.OperationScheduler.deinit(OperationScheduler.java:86)
at com.bergerkiller.bukkit.nolagg.NoLagg.disable(NoLagg.java:109)
at com.bergerkiller.bukkit.common.PluginBase.onDisable(PluginBase.java:249)
at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:217)
at org.bukkit.plugin.java.JavaPluginLoader.disablePlugin(JavaPluginLoader.java:362)
at org.bukkit.plugin.SimplePluginManager.disablePlugin(SimplePluginManager.java:381)
at com.bergerkiller.bukkit.common.PluginBase.onDisable(PluginBase.java:245)
at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:217)
at org.bukkit.plugin.java.JavaPluginLoader.disablePlugin(JavaPluginLoader.java:362)
at org.bukkit.plugin.SimplePluginManager.disablePlugin(SimplePluginManager.java:381)
at org.bukkit.plugin.SimplePluginManager.disablePlugins(SimplePluginManager.java:374)
at org.bukkit.craftbukkit.CraftServer.disablePlugins(CraftServer.java:245)
at net.minecraft.server.MinecraftServer.stop(MinecraftServer.java:397)
at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:477)
at net.minecraft.server.ThreadServerApplication.run(SourceFile:490)
-
View User Profile
-
Send Message
Posted Mar 1, 2012Please update to 1.2.2R0 build 2004
-
View User Profile
-
Send Message
Posted Mar 1, 2012@dlzltg Updated NoLagg for R6 build 1988 (the last one that was stable for me)
If anything breaks, feel free to report. See GitHub.
-
View User Profile
-
Send Message
Posted Mar 1, 2012Please update to 1.2.2R0 SNAPSHOT
[SEVERE] Could not load 'plugins\BKCommonLib.jar' in folder 'plugins'
org.bukkit.plugin.InvalidPluginException java.lang.VerifyError class com.bergerkiller.bukkit.common.PluginBase overrides final method getName.()Ljava/lang/String;
at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.java:150)
at org.bukkit.plugin.SimplePluginManager.loadPlugin(SimplePluginManager.java:287)
at org.bukkit.plugin.SimplePluginManager.loadPlugins(SimplePluginManager.java:211)
at org.bukkit.craftbukkit.CraftServer.loadPlugins(CraftServer.java:207)
at org.bukkit.craftbukkit.CraftServer.<init>(CraftServer.java:183)
at net.minecraft.server.ServerConfigurationManager.<init>(ServerConfigurationManager.java:53)
at net.minecraft.server.MinecraftServer.init(MinecraftServer.java:156)
at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:420)
at net.minecraft.server.ThreadServerApplication.run(SourceFile:490)
Caused by: java.lang.VerifyError class com.bergerkiller.bukkit.common.PluginBase overrides final method getName.()Ljava/lang/String;
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$100(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:41)
at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:29)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$100(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:41)
at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:29)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.java:139)
... 8 more
[SEVERE] Could not load 'plugins\NoLaggChunks.jar' in folder 'plugins'
org.bukkit.plugin.UnknownDependencyException BKCommonLib
at org.bukkit.plugin.SimplePluginManager.loadPlugins(SimplePluginManager.java:176)
at org.bukkit.craftbukkit.CraftServer.loadPlugins(CraftServer.java:207)
at org.bukkit.craftbukkit.CraftServer.<init>(CraftServer.java:183)
at net.minecraft.server.ServerConfigurationManager.<init>(ServerConfigurationManager.java:53)
at net.minecraft.server.MinecraftServer.init(MinecraftServer.java:156)
at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:420)
at net.minecraft.server.ThreadServerApplication.run(SourceFile:490)
2012-03-01 18:22:39 [SEVERE] Could not load 'plugins\NoLaggTNT.jar' in folder 'plugins'
org.bukkit.plugin.UnknownDependencyException BKCommonLib
at org.bukkit.plugin.SimplePluginManager.loadPlugins(SimplePluginManager.java:176)
at org.bukkit.craftbukkit.CraftServer.loadPlugins(CraftServer.java:207)
at org.bukkit.craftbukkit.CraftServer.<init>(CraftServer.java:183)
at net.minecraft.server.ServerConfigurationManager.<init>(ServerConfigurationManager.java:53)
at net.minecraft.server.MinecraftServer.init(MinecraftServer.java:156)
at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:420)
at net.minecraft.server.ThreadServerApplication.run(SourceFile:490)
-
View User Profile
-
Send Message
Posted Mar 1, 2012@cvxx7q Yup. They will probably try to support Bukkit plugins first though, but if the API is similar enough, they will just adjust it to support both. :) - The power of Spout plugins
Also, uploaded 1.70 to fix some issues in the TNT add-on. (the block change disable part was in the wrong place)
-
View User Profile
-
Send Message
Posted Mar 1, 2012@bergerkiller
which API are you referring to, the new Minecraft Server API? (the one that is soon to come)
-
View User Profile
-
Send Message
Posted Mar 1, 2012@cvxx7q Yes, but since Spout will try to support the API (implement) it anyway, it will always have the better say. :) So I hope that the API will not become 'just the API' without the core files ever being used. That would be a waste of time for the API developers...
-
View User Profile
-
Send Message
Posted Mar 1, 2012@bergerkiller
whichever way this huge "mess" goes, im sure we will see something than better arise, and we'll all be blown away because until now bukki thas been "the best" so if best the best, then ur doin damn well :P
and ur making spout sound like a dream lol, stop tempting me! XD
srsly tho, something will emerge and we will all just move on to that
-
View User Profile
-
Send Message
Posted Mar 1, 2012@ledhead900 The Spout system is even better - it is a Voxel game server engine. It allows infinite height worlds (chunks have Y-coordinates), uses the trove library and other fixes to make it the fastest so far, there is no difference between vanilla classes and custom classes, you are free to add your own packet protocols and thus blocks, entities and even new game modes. Everything is made with OO in mind, so you can attach the movement controller of a minecart to a chicken. Everything is pretty much possible, and a lot better implemented.
Right now, there are some debugging issues. For example, entity behaviour needs to be implemented (I am going to work on minecart and minetrack behaviour). Right now they only have a jumping sheep :)
it uses the same plugin-based system as Bukkit, only difference being that 'Minecraft' is a plugin itself; Vanilla. So the Spout server will be able to host multiple games. You could even make one game for vanilla users, and one game for Spoutcraft users. Everything is thought of and everything is discussed before it is implemented.
The packet protocol is finished (now called 'Messages') and it is already possible to host a server using it. All the building blocks for the server are there (chunks with compression, entityregionspawner, world, server, game, player inventory I can go on like this)
So far I am impressed at what they managed to do, not only in performance (multi threading), but also on how they managed to make it so 'moddable'.
-
View User Profile
-
Send Message
Posted Feb 29, 2012@ledhead900
no one ever promised bug free MC at release, and more so no software is ever bug free, or if it manages to be bug free external factors will causes bugs, its a hard game to play
keeping software bug free is like playing tetris, the shapes fall faster and faster and pile up and BAM! game over.
i agree with everything else you have said though, closing the source will destroy a large amount of minecraft servers and most will just jump to another open source server API and vanilla will once again be treated like a piece of trash left in the corner and forgotten, i know i rather download bukkit over vanilla, not just because of plugins, its just so much nicer to use, and if u have some crazy idea that wouldn't work with vanilla then i can pull up bukkit dev and load a plugin and make that idea a reality (somewhat.. XD) where as vanilla i snot extensible
-
View User Profile
-
Send Message
Posted Feb 29, 2012@bergerkiller
Is the spout system going to work the almost identical to the current system in terms of how you install and run plugin's, What I mean is Will it just be a fixed bukkit with much better performance that plugins will change the hooks for to call spoutserver rather than bukkits ?
About the integration I kinds feel the same, It just keeps on happening as soon as modding takes off some fool decides to go and kill what is, forcing all server owners that wish to keep modding to move along.
It has happened with every wrapper to date. Hmod was by far the biggest example of this and yet the mistakes just keep being made, Slack code,Slacker updates,Worse user feedback integration, Moving this to Vanilla client is going to KILL everything I can see it already no if's or but's about it.
Once it moves it will be closed source locked down by mojang and the REAL power behind what made it the most used wrapper the developers are forced to move on. While I respect the bukkit team, I just wish people would stop the lies, a modding API and wrapper is only as good as its supporters and it people like bergerkiller that make it shine not the creators of bukkit they only patch it so it works on updates with out supporters it would have been a dead end project.
Reality has shown me that the supporters should be the ones who say where the wrapper should head and how it should be improved, I hope the next system realizes this and takes a bloody good hard look at the past and makes an attempt to fix lack of community involvement.
For the record I dis approve of the move, not is it going to add more weight to the game that is already been left buggy and prone to breakage for far too long, it means we now will have a HUGE overhead on top of what ever the NEXT best server will be, weather it be spoutserver of TomsLuckyBatwingServer API, makes near no difference and does not exclude that fact we will have to permanently deal with the weight of this thing being attached to minecraft vanilla code that is clearly under high enough stress as it is.
Here is an example MC1.1 FPS 45-100 MC1.2 FPS 100-400
Go figure why is a snapshot version and more importantly an after thought of a finished game performing in excess of 200 fps better than its fully released and supposedly bug free counterpart.
-
View User Profile
-
Send Message
Posted Feb 29, 2012@XYZ24324773 Can't do that, sorry. I currently have the issue of having the same command (/lag) shared across multiple plugins, so I need to resolve that first.
-
View User Profile
-
Send Message
Posted Feb 29, 2012@Darkhand81 It will kill an immense amount of plugins during this transition, this includes pretty much all of my plugins. They are clearly going to enforce the API which is by far not as powerful enough, as has been proven so far. Never made a project without referencing CraftBukkit (well maybe Stream Remover is an exception on the rule?)
SignLink, TrainCarts, performance fixes and logging hooks in NoLagg, Redstone Mania somewhat (can be fixed) will probably make it past R5, but will be killed of when the API is introduced. I rather be prepared to step to the Spout server once that happens.
Other than that, the developers will now have to manage TWO projects. They could barely handle the CraftBukkit previously (and who can blame them really?)
But, let's be fair, the API deserves a chance. I just fear that this chance will not be taken, and compatibility, persistence and performance will be even worse.
-
View User Profile
-
Send Message
Posted Feb 29, 2012Could you add /nolagg lagmem function to NolaggChunk? Seems like it's embeded in the main Nolagg plugin.
-
View User Profile
-
Send Message
Posted Feb 29, 2012@bergerkiller
In regard to Bukkit going away:
https://twitter.com/#!/Dinnerbone/status/174894609753849856
Supposedly Bukkit is to remain in development until all the functionality of Bukkit is supported in the 'vanilla' server itself (and the client!). Although they did say the API itself would change, the functionality is supposed to meet current standards at a minimum.
-
View User Profile
-
Send Message
Posted Feb 29, 2012@Darkhand81
Got it. I was trying to open it on my mac with java 1.5 - updated to 1.6 on a different mac and all is good. Love the Examiner!!
One thing I notice on the report is a lot of LWC monitoring of redstone. Hmmm.
-
View User Profile
-
Send Message
Posted Feb 29, 2012See the new 1.69 version on GitHub, fixed the weird TNT dependency error, so NoLagg can now run without the two addons installed.
@quickclay If you run a fairly large server (10K+ chunks loaded on average), the main NoLagg will cause too much of a performance loss because of all the update routines. So, if this is the case:
And yes, the logging and examination bit will be separated as well. A simple decision I made a while back, because having all of the heavy load in a single jar file just isn't clean. When one bit fails, it can bring the entire plugin down.
EDIT
Actually, only the exterminator will be a separate plugin. Maybe I will make both the tool to view it with and the plugin the same, though it is a bit weird. Maybe better to completely separate it from NoLagg...though I need people to examine the server easily without all the issues.
Anyway, I need to look at Spout now, since Bukkit is dying. I need to understand the follow-up before it is too late :)
-
View User Profile
-
Send Message
Posted Feb 28, 2012Im getting this after updating to v1.68.
2012-02-29 05:56:03 [INFO] [NoLagg] Loading NoLagg v1.68. 2012-02-29 05:56:03 [SEVERE] Error occurred while enabling NoLagg v1.68 (Is it up to date?): com/bergerkiller/bukkit/nolaggtnt/TnTHandler java.lang.NoClassDefFoundError: com/bergerkiller/bukkit/nolaggtnt/TnTHandler at com.bergerkiller.bukkit.nolagg.NoLagg.enable(NoLagg.java:89) at com.bergerkiller.bukkit.common.PluginBase.onEnable(PluginBase.java:234) at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:230) at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:1057) at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:380) at org.bukkit.craftbukkit.CraftServer.loadPlugin(CraftServer.java:199) at org.bukkit.craftbukkit.CraftServer.enablePlugins(CraftServer.java:182) at org.bukkit.craftbukkit.CraftServer.<init>(CraftServer.java:141) at net.minecraft.server.ServerConfigurationManager.<init>(ServerConfigurationManager.java:52) at net.minecraft.server.MinecraftServer.init(MinecraftServer.java:148) at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:408) at net.minecraft.server.ThreadServerApplication.run(SourceFile:465) Caused by: java.lang.ClassNotFoundException: com.bergerkiller.bukkit.nolaggtnt.TnTHandler at java.net.URLClassLoader$1.run(URLClassLoader.java:217) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:205) at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:41) at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:29) at java.lang.ClassLoader.loadClass(ClassLoader.java:321) at java.lang.ClassLoader.loadClass(ClassLoader.java:266) ... 12 more
-
View User Profile
-
Send Message
Posted Feb 28, 2012If any part deserves to be put into its own plugin it's the examiner system... That's gold right there... Gold! :)
That way people who are suspicious of NoLagg can even compare running with and without it.