Inactive [FIX/ADMN] NoLagg v1.88.1 - Prevent common lag causes on your server [2338]

Discussion in 'Inactive/Unsupported Plugins' started by bergerkiller, Sep 17, 2011.

  1. Offline

    bergerkiller

    I had already made this plugin before after having a major lag issue. (lots of torches being filled, turned into items, lag for 20 minutes) It also works for 1060.

    Some feature ideas are taken over from PerformanceTweaks by @LexManos so some credit goes to him. Code, however, written from scratch by me. :)

    Important:

    If you get a warning message [NoLagg TLN] followed up with a stack trace in the log, this has to do with the main thread not having responded within 10 seconds. When a plugin takes more than this time to enable, it will show that. 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.

    NoLagg's features in a nutshell

    Description

    Prevent lag caused by many items

    Every time an item gets spawned, it is buffered per chunk. For example, you spawn 30 items using Q and the maximum allowed items per chunk is 20, then the 10 remaining items are not spawned. They are spawned as soon the item count in this chunk is < 20 again.

    Read more...

    Form item stacks - fully automatically

    Whenever two or more (configurable) items or experience orbs get near each other, they form a single stack of that item type. If someone drops 64 dirt blocks on the ground using Q, it will show a single item of 64 dirt instead.

    Read more...

    Prevent lag caused by TNT

    This plugin takes over tnt ignition caused by explosions. When exploding stacks of tnt, it does not rush all tnts into a single tick, but detonate them nicely in sync. This results in pretty awesome fireworks. :)

    Read more...

    Prevent lag caused by lighting glitches

    Whenever a new chunk is generated, it's lighting information is generated and all nearby players receive the updated chunk data. If the auto-method fails, you can use /nolagg fix to do it manually. This fixing fixes, for example, dark spots in and around caves lagging the client.

    Read more...

    Set entity spawn limits

    You can set a spawn limit on virtually every entity in the game. From mobs to items to TNT. Only thing being excluded is Players, since I can't simply kick someone 'like that'. :)
    Note: It removes already spawned entities too. So, if you want to keep your animals alive, don't set mob or animal limits, or it will possibly clear your farm animals. (or you can disable the spawn limiter all together)

    I recommend finding an alternative plugin for this instead. Removing entities after they are spawned causes more lag than it prevents!

    Global auto-saver

    Since asynchronous chunk saving is now implemented internally, it is no longer a problem to save entire worlds frequently. You can set auto-save intervals in the configuration. If used with an interval higher than 400 ticks (20 seconds) it will use a scheduled task instead of the internal saver to prevent chunks never getting saved. Another benefit is that player information is also auto-saved, preventing your players losing their inventory state.

    New chunk sending mechanics

    Instead of loading chunks all around the player, the player direction is used to load the visible chunks first. This means that players can expect chunks in front of them to load quickly, while chunks on the sides take a bit longer to appear. When the player looks into another direction, the direction changes and thus the new visible chunks get loaded first. Only if all chunks ahead of the player are loaded, chunks around the player are sent. This all can be configured using a simple minimum and maximum sending rate.

    Read more...

    Examining the server tick rate

    If you encounter very low tick rates and you want to find out what plugin is causing it, you can use the examine component to find it out. It comes with a graphic viewer, which makes bug tracking the easiest thing ever.

    Read more...

    Prevent cross-thread access for events

    As it seems, some plugins don't follow the rules and use Bukkit methods in another thread. This plugin will notify you and cancel if possible whenever this happens so other plugins understand their mistake. If you encounter a lot of spam in the console, first check the stack trace for the plugin that caused the error. Report this error to the author or remove the plugin, if you have questions you are free to ask.



    Configuration (on BukkitDev)

    Commands and Permissions (on BukkitDev)

    Synchronized code accessed by another thread? (BukkitDev)



    Media



    Video by brandcool86


    FAQ

    - Help I experience missing chunks
    If you are using Spout, don't use Reloads. This is also the reason why Spout added a warning when a player tries to reload the server. Not using Spout, then it's a bug which you can report.

    - Can this plugin be used with PTweaks
    (this message was really old...) Yes, they are compatible, but if certain features overlap, make sure you disable these features in either plugin.

    - I get a warning about the async auto save and interval. Wat do?
    Change the autoSaveInterval value in the configuration to a value higher than 400, like 600. The warning is to prevent endless autosaves to occur, clogging up CPU.

    - I have experienced CPU usage
    CPU usage is not the same as lag. NoLagg uses multiple (2-3) extra threads to prevent tick and network lag. If a lot has to be done, it does this quicker, but this takes more CPU obviously.

    - I have lag when using NoLagg
    See also the FAQ above. Explain what type of lag you have: tick lag, client lag, network lag and/or 'block placement' lag. You can use /nolagg monitor to check the tick rate. If this is normal (>15), then you have network lag. Client lag is when the FPS drops. Block placement lag is lag when the tick rate is normal and other network messages, like chat, are instant.

    - WorldEdit causes lag...
    YES because it is unsafe to take over the main thread while another plugin is having hold over it. I can try fixing this, but it could ultimately lead to some serious concurrency exceptions. Don't expect this to be implemented very soon...

    - Do spawn limits interfere with mob-spawning plugins like MobArena?
    No, it does not. It only limits mobs spawned by 'nature': all custom creature spawns are ignored throughout the run of the plugin. Only after you reload will it lose track of these entities and will it remove custom-spawned mobs. If you use MobArena, be sure nothing is going on when you reload the server.

    - Does item stacking interfere with Showcase or BleedingMobs?
    It supports Showcase and ShowcaseStandalone entirely. (showcased items are completely ignored at all times) The same applies to the 'particles' created by the BleedingMobs plugin. Know of a plugin where it stacks items which should not be stacked? Post the plugin name so I can add support. You are an owner and want to add support? Only having a function in your plugin to check if an item is 'ignored' is enough.

    - Can this plugin be used with Chunk Manager
    If you want to use the Chunk Manager with Nolagg, disable the chunk sending of Nolagg first. If you don't do that, this plugin will do that by itself and send a warning in the log. Of course, compare the results first. :)

    - What are the best settings if I have a lot of RAM memory?
    This plugin does not deal with reduced RAM memory. If I could, I would, but you simply can't reduce the amount of memory Java uses. This data is locked and secured, so I can't simply throw away bits of data or write and read data from/to disk. Any plugin claiming to reduce RAM usage on a server, is probably 'garbage collecting'. This fakes having less RAM usage by removing unused data, but Java does this by itself as well once it hits a certain limit. All these plugins will do is make the Garbage Collector run in overdrive, which will only kill your tick rate and/or CPU speeds. A bad thing.

    - I get a lot of 'Synchronized code accessed from another thread' errors
    Find out what plugin is acting up by inspecting the stack trace. If the plugin that causes this is inactive, all you can do is wait for a refurnished version or someone to fix it for you, or use an alternative plugin. If it's still under development, notify the author of this, it IS an error caused by that plugin. If you can't find out the cause, PM me or post in this thread.


    Before you begin writing a lag issue

    This is very important, just posting a 'it causuz lagz und shitz' won't do, won't help and I won't be able to help you any further either. Question is if I even want to help you, if you post such a message without anything worth looking at. Things to include in your message:
    - Errors in the log if possible
    - What CB version you use and what NoLagg version you use
    - When this lag occurs. Tick rate drop in general?
    - The configuration you used when running this plugin
    - What type of lag if applicable. Options are: tick lag, client lag, network lag (see above)

    Important links

    NoLagg Download page and others at Dev Bukkit
    View the source code of NoLagg at GitHub

    Use an archive extracting program (WinRar, WinZip) to open the archive.

    TODO-list:
    - Add option to disable physics when the tick delay becomes too high

    Changelog

    Show your appreciation for my plugins by donating
    [​IMG]
     
  2. Offline

    externo6

    Having the same problem
     
  3. Offline

    bergerkiller

    @TelephoneKiosk I'll look into the error you're having, probably a map being set from within a loop.

    Also, the directional chunk sending is very basic algorithm, I indeed wonder why Notch didn't implement it.

    @dockter Not sure about the signs, must be a packet sending issue. Does the sign text re-appear when you place a block ontop or next to the sign?

    I really want to get and gradually send the packets returned by Spout, but the missing data is a pain. @Afforess could you help me with that for a bit. Example (we take it that only one player is on the server):
    Code:
    package com.bergerkiller.bukkit.nolagg;
    
    import java.util.LinkedList;
    import java.util.Queue;
    
    import org.bukkit.Bukkit;
    import org.bukkit.entity.Player;
    import org.getspout.spoutapi.SpoutManager;
    import org.getspout.spoutapi.packet.listener.PacketListener;
    import org.getspout.spoutapi.packet.standard.MCPacket;
    import org.getspout.spoutapi.packet.standard.MCPacket51MapChunk;
    import org.getspout.spoutapi.player.SpoutPlayer;
    
    public class NLPacketListener implements PacketListener {
    
        public static boolean spoutAllowChunk = false;
    
        private static Queue<MCPacket51MapChunk> chunks = new LinkedList<MCPacket51MapChunk>();
    
        public static void send(int count) {
            SpoutPlayer player = SpoutManager.getPlayer(Bukkit.getServer().getOnlinePlayers()[0]);
            for (int i = 0; i < count; i++) {
                MCPacket51MapChunk chunk = chunks.poll();
                if (chunk == null) return;
                player.sendImmediatePacket((MCPacket) chunk);
            }
        }
    
        public boolean checkPacket(Player player, MCPacket packet) {
            if (!spoutAllowChunk && packet instanceof MCPacket51MapChunk) {
                MCPacket51MapChunk m = (MCPacket51MapChunk) packet;
                if (m.getSizeX() == 16 && m.getSizeY() == 128 && m.getSizeZ() == 16) {
                    //whole packet being sent: retrieve
                    chunks.offer(m);
                    return false;
                }
            }
            return true;
        }
    
    }
    Because when I use this and call send(1) in onPlayerInteract, the client gets disconnected and this is shown in the log:
    Code:
    13:42:38 [SEVERE] java.lang.NullPointerException
        at java.lang.System.arraycopy(Native Method)
        at java.io.BufferedOutputStream.write(Unknown Source)
        at java.io.DataOutputStream.write(Unknown Source)
        at net.minecraft.server.Packet51MapChunk.a(Packet51MapChunk.java:88)
        at net.minecraft.server.Packet.a(Packet.java:116)
        at net.minecraft.server.NetworkManager.g(NetworkManager.java:107)
        at net.minecraft.server.NetworkManager.d(NetworkManager.java:267)
        at net.minecraft.server.NetworkWriterThread.run(SourceFile:100)
    This points to the data output sender of the chunk, where compressed data ends up being null. I badly need to fix that...

    If I use the regular packet (after compression) it doesn't throw an error, but doesn't send chunks to the player either.
     
  4. Offline

    Afforess

    After you send a chunk, you need to send the tile entities for the chunk. We do this in Spout to ensure signs, chests, etc, appear correctly client side:

    https://github.com/SpoutDev/Spout/blob/master/src/org/getspout/spout/SpoutNetServerHandler.java#L722
     
  5. Offline

    Timan

    That spout plugin messes up all my signs, so thats required now for NoLagg?
     
  6. Offline

    ledhead900

    @bergerkiller
    PHP:
    BUG since installing v 1.21

    at 
    ([Earth190.9819483999882325.0172.3000000119209)
    2011-09-30 22:29:35 [SEVERECould not pass event PLAYER_MOVE to NoLagg
    java
    .util.ConcurrentModificationException
    at java
    .util.HashMap$HashIterator.nextEntry(Unknown Source)
    at java.util.HashMap$KeyIterator.next(Unknown Source)
    at java.util.AbstractCollection.toArray(Unknown Source)
    at com.bergerkiller.bukkit.nolagg.PlayerChunkLoader.updateChunk(PlayerChunkLoader.java:199)
    at com.bergerkiller.bukkit.nolagg.PlayerChunkLoader.update(PlayerChunkLoader.java:83)
    at com.bergerkiller.bukkit.nolagg.ChunkHandler.handleMove(ChunkHandler.java:49)
    at com.bergerkiller.bukkit.nolagg.NLPlayerListener.onPlayerMove(NLPlayerListener.java:32)
    at org.bukkit.plugin.java.JavaPluginLoader$7.execute(JavaPluginLoader.java:286)
    at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:58)
    at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:338)
    at net.minecraft.server.NetServerHandler.a(NetServerHandler.java:180)
    at org.getspout.spout.SpoutNetServerHandler.a(SpoutNetServerHandler.java:618)
    at net.minecraft.server.Packet10Flying.a(SourceFile:126)
    at net.minecraft.server.NetworkManager.b(NetworkManager.java:226)
    at net.minecraft.server.NetServerHandler.a(NetServerHandler.java:92)
    at org.getspout.spout.SpoutNetServerHandler.a(SpoutNetServerHandler.java:500)
    at net.minecraft.server.NetworkListenThread.a(SourceFile:108)
    at net.minecraft.server.MinecraftServer.h(MinecraftServer.java:464)
    at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:374)
    at net.minecraft.server.ThreadServerApplication.run(SourceFile:417
    And I also noticed that sign text will disappear until u update the chunk it is in, Also sometimes the chunks go see thru when u walk close to edge of a connecting one. Other strange stuff to do with chunks not showing correctly I will try replicate it and get a image up. This is also a result of the latest Nolagg. as it did not happen in prev versions.

    This is with the Test Server limited plugins mainly all yours
    2011-09-30 22:43:27 [INFO] Plugins: BorderGuard, Essentials, EssentialsProtect, FalseBookBlock, FalseBookCore, FalseBookExtra, FalseBookIC, LazyRoad, Multiverse-Core, Multiverse-Portals, SignLink, SkylandsPlus, Spout, WorldEdit, WorldFeatures, NoLagg, BananaSpace, Train Carts
     
  7. Offline

    Afforess

    If you have issues with Spout, report it to us so we can fix it. :)
     
  8. Offline

    ledhead900

    In that case then http://forums.bukkit.org/threads/fi...-on-your-server-1185.36986/page-9#post-713692

    Tho I think its this plugin based on an educated guess that its only started since the the version where he hooked into spout, I have been running spout on test server for a lot longer then this version of this plugin.

    But It would not hurt to take a look at it, I explain what happens on my post I linked.
     
  9. Offline

    bergerkiller

    @Afforess ah thanks, I thought the tile entity data was send with the chunk data as a NBTtagcompound. I guess I can get all (native) tile entities and send the packet returned by f() (or g()).

    In the code I posted previously, do you know why the actual chunks don't get sent? For some reason I can't send the mapchunkpacket returned by the checkPacket manually in any way...
     
  10. Offline

    ledhead900

    This would be related to why chunks the disappear when u get close to them and appear as u back away from them ? as I described in the post I made above yours. Are we not meant to use the chunk send interval setting yet ? I left at default but this is what happens plus I got a player move error.
     
  11. can i get old versions? This seemed to be working great with on version 1.6 since i feel there has been added alot of stuff i dont need, and my server has been behaving wierd too
     
  12. Offline

    Borch

    Crap, I updated don't have a backup of 1.20... Can't use spout atm, so no NoLagg for me anymore :(
     
  13. Offline

    bergerkiller

    Don't worry, I'm making the chunk handling code a separate 'add-on' which requires Spout to work. It works without Spout, but sending chunks twice ruins the entire idea...
     
  14. Offline

    pomo4ka

    Code:
    2011-10-01 06:22:24 [SEVERE] Could not pass event PLAYER_INTERACT to NoLagg
    java.lang.IllegalStateException: Start block missed in BlockIterator
    	at org.bukkit.util.BlockIterator.<init>(BlockIterator.java:170)
    	at org.bukkit.util.BlockIterator.<init>(BlockIterator.java:257)
    	at org.bukkit.util.BlockIterator.<init>(BlockIterator.java:292)
    	at org.bukkit.craftbukkit.entity.CraftLivingEntity.getLineOfSight(CraftLivingEntity.java:94)
    	at org.bukkit.craftbukkit.entity.CraftLivingEntity.getTargetBlock(CraftLivingEntity.java:120)
    	at com.bergerkiller.bukkit.nolagg.NLPlayerListener.onPlayerInteract(NLPlayerListener.java:21)
    	at org.bukkit.plugin.java.JavaPluginLoader$11.execute(JavaPluginLoader.java:314)
    	at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:58)
    	at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:338)
    	at org.bukkit.craftbukkit.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:168)
    	at org.bukkit.craftbukkit.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:139)
    	at net.minecraft.server.NetServerHandler.a(NetServerHandler.java:560)
    	at net.minecraft.server.Packet15Place.a(SourceFile:57)
    	at net.minecraft.server.NetworkManager.b(NetworkManager.java:226)
    	at net.minecraft.server.NetServerHandler.a(NetServerHandler.java:92)
    	at net.minecraft.server.NetworkListenThread.a(SourceFile:108)
    	at net.minecraft.server.MinecraftServer.h(MinecraftServer.java:464)
    	at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:374)
    	at net.minecraft.server.ThreadServerApplication.run(SourceFile:417)
    
     
  15. Offline

    bobeeb

  16. Offline

    ledhead900

    @bergerkiller

    ITEM1
    PHP:
    2011-09-30 23:03:11 [INFOledhead900 [/127.0.0.1:52221logged in with entity id 215 at ([Earth159.643274662778525.0163.76874632873108)
    2011-09-30 23:03:11 [INFOReading data
    2011
    -09-30 23:03:12 [INFO] [SpoutSuccessfully authenticated ledhead900's Spoutcraft client. Running client version: 1.0.6.449
    2011-09-30 23:03:13 [INFO] stobess lost connection: disconnect.quitting
    2011-09-30 23:03:13 [INFO] Connection reset
    2011-09-30 23:03:14 [INFO] Freed 290.036 MB.
    2011-09-30 23:03:22 [INFO] [PLAYER_COMMAND] Spunkan: /tpahere led
    2011-09-30 23:03:30 [INFO] stobess [/110.175.107.173:51532] logged in with entity id 216 at ([Earth] 165.54175585862237, 27.123539976998572, 177.09927503638366)
    2011-09-30 23:07:09 [INFO] [PLAYER_COMMAND] ledhead900: /afk
    2011-09-30 23:08:10 [SEVERE] Could not pass event PLAYER_MOVE to NoLagg
    java.util.ConcurrentModificationException
    at java.util.HashMap$HashIterator.nextEntry(Unknown Source)
    at java.util.HashMap$KeyIterator.next(Unknown Source)
    at java.util.AbstractCollection.toArray(Unknown Source)
    at com.bergerkiller.bukkit.nolagg.PlayerChunkLoader.updateChunk(PlayerChunkLoader.java:199)
    at com.bergerkiller.bukkit.nolagg.PlayerChunkLoader.update(PlayerChunkLoader.java:83)
    at com.bergerkiller.bukkit.nolagg.ChunkHandler.handleMove(ChunkHandler.java:49)
    at com.bergerkiller.bukkit.nolagg.NLPlayerListener.onPlayerMove(NLPlayerListener.java:32)
    at org.bukkit.plugin.java.JavaPluginLoader$7.execute(JavaPluginLoader.java:286)
    at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:58)
    at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:338)
    at net.minecraft.server.NetServerHandler.a(NetServerHandler.java:180)
    at org.getspout.spout.SpoutNetServerHandler.a(SpoutNetServerHandler.java:618)
    at net.minecraft.server.Packet10Flying.a(SourceFile:126)
    at net.minecraft.server.NetworkManager.b(NetworkManager.java:226)
    at net.minecraft.server.NetServerHandler.a(NetServerHandler.java:92)
    at org.getspout.spout.SpoutNetServerHandler.a(SpoutNetServerHandler.java:500)
    at net.minecraft.server.NetworkListenThread.a(SourceFile:108)
    at net.minecraft.server.MinecraftServer.h(MinecraftServer.java:464)
    at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:374)
    at net.minecraft.server.ThreadServerApplication.run(SourceFile:417)
    2011-09-30 23:11:02 [SEVERE] Could not pass event PLAYER_MOVE to NoLagg
    java.util.ConcurrentModificationException
    at java.util.HashMap$HashIterator.nextEntry(Unknown Source)
    at java.util.HashMap$KeyIterator.next(Unknown Source)
    at java.util.AbstractCollection.toArray(Unknown Source)
    at com.bergerkiller.bukkit.nolagg.PlayerChunkLoader.updateChunk(PlayerChunkLoader.java:199)
    at com.bergerkiller.bukkit.nolagg.PlayerChunkLoader.update(PlayerChunkLoader.java:83)
    at com.bergerkiller.bukkit.nolagg.ChunkHandler.handleMove(ChunkHandler.java:49)
    at com.bergerkiller.bukkit.nolagg.NLPlayerListener.onPlayerMove(NLPlayerListener.java:32)
    at org.bukkit.plugin.java.JavaPluginLoader$7.execute(JavaPluginLoader.java:286)
    at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:58)
    at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:338)
    at net.minecraft.server.NetServerHandler.a(NetServerHandler.java:180)
    at org.getspout.spout.SpoutNetServerHandler.a(SpoutNetServerHandler.java:618)
    at net.minecraft.server.Packet10Flying.a(SourceFile:126)
    at net.minecraft.server.NetworkManager.b(NetworkManager.java:226)
    at net.minecraft.server.NetServerHandler.a(NetServerHandler.java:92)
    at org.getspout.spout.SpoutNetServerHandler.a(SpoutNetServerHandler.java:500)
    at net.minecraft.server.NetworkListenThread.a(SourceFile:108)
    at net.minecraft.server.MinecraftServer.h(MinecraftServer.java:464)
    at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:374)
    at net.minecraft.server.ThreadServerApplication.run(SourceFile:417)
    2011-09-30 23:13:52 [INFO] Spunkan lost connection: disconnect.quitting
    2011-09-30 23:13:52 [INFO] Connection reset
    2011-09-30 23:13:54 [INFO] Freed 487.981 MB.
    2011-09-30 23:13:59 [INFO] Spunkan [/10.0.0.10:53462] logged in with entity id 302 at ([Earth] 190.22676409299606, 21.252567766416078, 156.16233807809638)
    2011-09-30 23:15:37 [SEVERE] Could not pass event PLAYER_MOVE to NoLagg
    java.util.ConcurrentModificationException
    at java.util.HashMap$HashIterator.nextEntry(Unknown Source)
    at java.util.HashMap$KeyIterator.next(Unknown Source)
    at java.util.AbstractCollection.toArray(Unknown Source)
    at com.bergerkiller.bukkit.nolagg.PlayerChunkLoader.updateChunk(PlayerChunkLoader.java:199)
    at com.bergerkiller.bukkit.nolagg.PlayerChunkLoader.update(PlayerChunkLoader.java:83)
    at com.bergerkiller.bukkit.nolagg.ChunkHandler.handleMove(ChunkHandler.java:49)
    at com.bergerkiller.bukkit.nolagg.NLPlayerListener.onPlayerMove(NLPlayerListener.java:32)
    at org.bukkit.plugin.java.JavaPluginLoader$7.execute(JavaPluginLoader.java:286)
    at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:58)
    at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:338)
    at net.minecraft.server.NetServerHandler.a(NetServerHandler.java:180)
    at org.getspout.spout.SpoutNetServerHandler.a(SpoutNetServerHandler.java:618)
    at net.minecraft.server.Packet10Flying.a(SourceFile:126)
    at net.minecraft.server.NetworkManager.b(NetworkManager.java:226)
    at net.minecraft.server.NetServerHandler.a(NetServerHandler.java:92)
    at org.getspout.spout.SpoutNetServerHandler.a(SpoutNetServerHandler.java:500)
    at net.minecraft.server.NetworkListenThread.a(SourceFile:108)
    at net.minecraft.server.MinecraftServer.h(MinecraftServer.java:464)
    at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:374)
    at net.minecraft.server.ThreadServerApplication.run(SourceFile:417)
    2011-09-30 23:17:15 [INFO] [PLAYER_COMMAND] Spunkan: /tp sto
    2011-09-30 23:17:17 [SEVERE] Could not pass event PLAYER_MOVE to NoLagg
    java.util.ConcurrentModificationException
    at java.util.HashMap$HashIterator.nextEntry(Unknown Source)
    at java.util.HashMap$KeyIterator.next(Unknown Source)
    at java.util.AbstractCollection.toArray(Unknown Source)
    at com.bergerkiller.bukkit.nolagg.PlayerChunkLoader.updateChunk(PlayerChunkLoader.java:199)
    at com.bergerkiller.bukkit.nolagg.PlayerChunkLoader.update(PlayerChunkLoader.java:83)
    at com.bergerkiller.bukkit.nolagg.ChunkHandler.handleMove(ChunkHandler.java:49)
    at com.bergerkiller.bukkit.nolagg.NLPlayerListener.onPlayerMove(NLPlayerListener.java:32)
    at org.bukkit.plugin.java.JavaPluginLoader$7.execute(JavaPluginLoader.java:286)
    at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:58)
    at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:338)
    at net.minecraft.server.NetServerHandler.a(NetServerHandler.java:180)
    at org.getspout.spout.SpoutNetServerHandler.a(SpoutNetServerHandler.java:618)
    at net.minecraft.server.Packet10Flying.a(SourceFile:126)
    at net.minecraft.server.NetworkManager.b(NetworkManager.java:226)
    at net.minecraft.server.NetServerHandler.a(NetServerHandler.java:92)
    at org.getspout.spout.SpoutNetServerHandler.a(SpoutNetServerHandler.java:500)
    at net.minecraft.server.NetworkListenThread.a(SourceFile:108)
    at net.minecraft.server.MinecraftServer.h(MinecraftServer.java:464)
    at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:374)
    at net.minecraft.server.ThreadServerApplication.run(SourceFile:417)
    2011-09-30 23:17:25 [INFO] <stobess> you
    2011-09-30 23:17:28 [INFO] <stobess> xD
    2011-09-30 23:17:42 [INFO] <Spunkan> lol why type xD
    2011-09-30 23:22:03 [SEVERE] Could not pass event PLAYER_MOVE to NoLagg
    java.util.ConcurrentModificationException
    at java.util.HashMap$HashIterator.nextEntry(Unknown Source)
    at java.util.HashMap$KeyIterator.next(Unknown Source)
    at java.util.AbstractCollection.toArray(Unknown Source)
    at com.bergerkiller.bukkit.nolagg.PlayerChunkLoader.updateChunk(PlayerChunkLoader.java:199)
    at com.bergerkiller.bukkit.nolagg.PlayerChunkLoader.update(PlayerChunkLoader.java:83)
    at com.bergerkiller.bukkit.nolagg.ChunkHandler.handleMove(ChunkHandler.java:49)
    at com.bergerkiller.bukkit.nolagg.NLPlayerListener.onPlayerMove(NLPlayerListener.java:32)
    at org.bukkit.plugin.java.JavaPluginLoader$7.execute(JavaPluginLoader.java:286)
    at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:58)
    at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:338)
    at net.minecraft.server.NetServerHandler.a(NetServerHandler.java:180)
    at org.getspout.spout.SpoutNetServerHandler.a(SpoutNetServerHandler.java:618)
    at net.minecraft.server.Packet10Flying.a(SourceFile:126)
    at net.minecraft.server.NetworkManager.b(NetworkManager.java:226)
    at net.minecraft.server.NetServerHandler.a(NetServerHandler.java:92)
    at org.getspout.spout.SpoutNetServerHandler.a(SpoutNetServerHandler.java:500)
    at net.minecraft.server.NetworkListenThread.a(SourceFile:108)
    at net.minecraft.server.MinecraftServer.h(MinecraftServer.java:464)
    at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:374)
    at net.minecraft.server.ThreadServerApplication.run(SourceFile:417)
    2011-09-30 23:23:27 [SEVERE] Could not pass event PLAYER_MOVE to NoLagg
    java.util.ConcurrentModificationException
    at java.util.HashMap$HashIterator.nextEntry(Unknown Source)
    at java.util.HashMap$KeyIterator.next(Unknown Source)
    at java.util.AbstractCollection.toArray(Unknown Source)
    at com.bergerkiller.bukkit.nolagg.PlayerChunkLoader.updateChunk(PlayerChunkLoader.java:199)
    at com.bergerkiller.bukkit.nolagg.PlayerChunkLoader.update(PlayerChunkLoader.java:83)
    at com.bergerkiller.bukkit.nolagg.ChunkHandler.handleMove(ChunkHandler.java:49)
    at com.bergerkiller.bukkit.nolagg.NLPlayerListener.onPlayerMove(NLPlayerListener.java:32)
    at org.bukkit.plugin.java.JavaPluginLoader$7.execute(JavaPluginLoader.java:286)
    at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:58)
    at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:338)
    at net.minecraft.server.NetServerHandler.a(NetServerHandler.java:180)
    at org.getspout.spout.SpoutNetServerHandler.a(SpoutNetServerHandler.java:618)
    at net.minecraft.server.Packet10Flying.a(SourceFile:126)
    at net.minecraft.server.NetworkManager.b(NetworkManager.java:226)
    at net.minecraft.server.NetServerHandler.a(NetServerHandler.java:92)
    at org.getspout.spout.SpoutNetServerHandler.a(SpoutNetServerHandler.java:500)
    at net.minecraft.server.NetworkListenThread.a(SourceFile:108)
    at net.minecraft.server.MinecraftServer.h(MinecraftServer.java:464)
    at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:374)
    at net.minecraft.server.ThreadServerApplication.run(SourceFile:417)
    2011-09-30 23:23:59 [SEVERE] Could not pass event PLAYER_MOVE to NoLagg
    java.util.ConcurrentModificationException
    at java.util.HashMap$HashIterator.nextEntry(Unknown Source)
    at java.util.HashMap$KeyIterator.next(Unknown Source)
    at java.util.AbstractCollection.toArray(Unknown Source)
    at com.bergerkiller.bukkit.nolagg.PlayerChunkLoader.updateChunk(PlayerChunkLoader.java:199)
    at com.bergerkiller.bukkit.nolagg.PlayerChunkLoader.update(PlayerChunkLoader.java:83)
    at com.bergerkiller.bukkit.nolagg.ChunkHandler.handleMove(ChunkHandler.java:49)
    at com.bergerkiller.bukkit.nolagg.NLPlayerListener.onPlayerMove(NLPlayerListener.java:32)
    at org.bukkit.plugin.java.JavaPluginLoader$7.execute(JavaPluginLoader.java:286)
    at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:58)
    at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:338)
    at net.minecraft.server.NetServerHandler.a(NetServerHandler.java:180)
    at org.getspout.spout.SpoutNetServerHandler.a(SpoutNetServerHandler.java:618)
    at net.minecraft.server.Packet10Flying.a(SourceFile:126)
    at net.minecraft.server.NetworkManager.b(NetworkManager.java:226)
    at net.minecraft.server.NetServerHandler.a(NetServerHandler.java:92)
    at org.getspout.spout.SpoutNetServerHandler.a(SpoutNetServerHandler.java:500)
    at net.minecraft.server.NetworkListenThread.a(SourceFile:108)
    at net.minecraft.server.MinecraftServer.h(MinecraftServer.java:464)
    at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:374)
    at net.minecraft.server.ThreadServerApplication.run(SourceFile:417)
    Appeared after the update to 1.21

    ITEM2:
    Mob ghosting fade in and out type stuff they don't actually exist when I go near them there is nothing there at all.

    http://img703.imageshack.us/slideshow/webplayer.php?id=20111001014523.png

    Things to look for in these images are the creepers that appear and then suddenly vanish & the two shots with the chicken in it that if u look in the background have hostile mobs and that appear suddenly , take note of the time stamps on images the issue speaks for themselves.

    I have the world view set to 8 in the settings left the chunk update stuff at default, I have tested this with BOTH reco and dev builds of spout.
     
  17. Offline

    bergerkiller

    Separated the general NoLagg and the Spout-requiring custom chunk loader as a new Plugin, acting as an add-on. If you want to use the sendChunkInterval/Delay and the player-clicking-chunk-load-feature, you'll need Spout and the NoLagg add-on added. (it's called NoLaggChunks)

    Updating...DONE
     
  18. Offline

    ledhead900

    1. Does this fix the chunk issues and the error ?
    2. What are the recommended settings to load more chunks around the player before slowing down the chunk send to the chunk they are in ?
    This is my config setup so far what exactly controls how long mobs last for ? to try fix the ghost issue I had.

    PHP:
    autoSaveInterval900
    explosionRate
    40
    chunkUnloadDelay
    10000
    formItemStacks
    true
    tntDetonationRate
    10
    maxItemsPerChunk
    30
    orbScannerInterval
    200
    updateInterval
    20
    tntDetonationInterval
    1
    spawnlimits
    :
        default:
            
    creeper40
            enderman
    150
            itemwood
    64
            tnt
    50
        
    global:
            
    mob4500
        worlds
    :
            
    world:
                
    mob700
                creeper
    30
                squid
    30
                slime
    100
                enderman
    50
                tnt
    50
                arrow
    100
            world_nether
    :
                
    mob700
                tnt
    50
    chunkSendInterval
    1
    chunkSendRate
    2
     
  19. Offline

    bergerkiller

    1. Yup it fixes the chunk issues and error (added tile entity packet sending)
    2. You can't set chunks to be sent more slowly 'after a while', not going to add it either since that would truly make things hard to keep bug-free...keep the rate < 4 and interval > 0, it depends on your server speed how many packets the clients can handle. If it lags too badly (e.g. chat is failing) set the rate lower and increase the interval.

    note that a rate of 0 disabled the feature. chunkSend* requires Spout and the NoLaggChunks add-on.
     
  20. Offline

    ledhead900

    "1. Yup it fixes the chunk issues and error (added tile entity packet sending)"
    You know that is probably what caused the mob ghosting to start with, as for 2 we have no lag as it is I just wanted to fix the mob and chunk issue and other than that servers running perfectly. 0.8% idle cpu usage and under 600mbs ram with no one playing.

    Had a lot of time to test this before using it on our main server, over 5 days in fact with 3 - 5 ppl on a test server building the starting and Main world for the 1.9 update. Still need to wait for 1.9 and reco before we can generate any actual proper notch gen worlds for use. Starting newb world is 1.8.1 gen and tiny so I did not care about the missing generation much ;P, I encourage spoutcraft and we use Spout plugins so I did get the nolagg spout addon.

    Let me get one thing straight, You asked me to set interval to 0 when it defaults to 1 for the chunksend , this benefits how ? exactly. I am not familiar with how chunks work at the level you control them.
     
  21. Offline

    bergerkiller

    @ledhead900 if the custom chunk sending is 'messing it up', THEN set the chunkSendRate to 0. This disables it.
    Other than that it works somewhat like the explosion buffer: every <interval> <rate> chunk packets are sent to the player. So you could send 5 packets every second by setting the rate to 5 and the interval to 20. This way you can add 'gaps' in the flow of packets to allow regular chat and move packets to flow through. This also reduces client lag, since the client has to process less chunks per second. The previous system pushed all packets into a single tick...
     
  22. Offline

    ledhead900

    Makes me wonder if chunk sending is actually working if it just makes entity's fade in and out. It's not the update interval that is set to 20 and the mobs STILL exist there just ghosts that appear when ever they damn well want and then end up gone in less than 50ms. Chunks appear to load fine but mobs are completely messed up. well its 5am I am going to take a rest and hopefully getup later on in the afternoon " love sunday" then I will have a tinker with these settings you suggest I will try make it higher then I will set it to 0 then I will remove spout add-on then if that does not work I'm going to be mad.

    I also noticed another thing since 1.8 spout or Nolagg Spoutcrafts F3 chunk cache says its 0% all the time.
     
  23. Offline

    bergerkiller

    @ledhead900 again, that is the precise description of the mob spawn limiter. It can only be a spawnlimit set in config.yml, else I don't know what it is...
     
  24. Offline

    wlwhs321

    very nice plugin :D i think i blew 40000 tnt but little lag i guess too much blocks :p
     
  25. Offline

    erdrickk

    I think I will hold off. This new direction with Spout and now splitting the plugin makes me nervous. More features is not always better...
     
  26. Offline

    bergerkiller

    @erdrickk that's why I splitted it up; the chunk handling thing is optional. :)
     
  27. Offline

    Fr0zenfr0g

    if i have the spout wersion,spout and spoutcraft but how will it be for the people that dont have spoutcraft?
     
  28. Offline

    bergerkiller

    Exactly the same; I only use the Spout netserverhandler to catch and cancel certain chunk packages, to send my own later on.
     
  29. Offline

    Fr0zenfr0g

    ok, then i hope you have made it also this time :)
     
  30. Offline

    Eminam

    This doesn't seem to stop the spawning of entities past the set limit. I do /gc and itll show me theres a lot more then the limit i set for the entities.
     
  31. Offline

    Fr0zenfr0g

    and i have spout, spoutcraft and i have big blackholes because this plugin ;(
     

Share This Page