Limited async to single thread processing which will help out to spread out chunk check instead of pushing all of it in one go which could have caused some issues with more players online and more chunks to be checked, while it was fast it wanted to use more CPU resources than it could have actually handled
Added option to hover over feedback messages from clean command to indicate time it took to check all the chunks. This is just extra information for some idea how long it takes to process data.
Fix for clean command reporting incorrect checked chunk number if chunk grouping is disabled
Fix for issue with 1.8.8 and older servers causing error messages
Changed approach in how we are processing chunk checks which should be now limited so single thread instead of trying to maximize those which was causing issues in some systems with more limited available thread count
Modified cleaning process to avoid pushing out al chunk checks in one go, which was causing some issues in case we had quite few of those to be done even if it was done async. Now it's done in a queue mannear to just do one after the other to spread out load even when it's done in async.
Fix for expanded range option calculating rage by +1 than it should have had
Fix for overlapping chunks from multiple players in same area being checked multiple times when we have expandedRange option enabled instead of doing it only once per cycle.
Weekend... Lowered limit for expanded chunks from 3 to 2 max, as this only creates huge numbers of chunks needed to be checked as separate ones which could have caused some issues with thread counts.
Fix for issue relating to furniture plugins using invisible armor stands which got cooled off when we should skip those
Fix for armor stand placement over allowed limit when you have bypass permission which would have resulted in armorstand not spawning in and item being consumed
Rework on entire cleaning logic. Now we will have improved checks for better performance gains. Basic entity spawns are still checked in sync but one check is only around 0.05ms, while auto clean and clean command will be performed in Async mode which will avoid any increase in server load
Some improvements for hopper control to more properly adjust hopper transfer rates
Removed few default entity types from EntityTypes list which should not be controlled by applying limitations to them. As of example TEXT_DISPLAY entity type should be limited as its used by other plugins to display text in hologram form as of 1.19.3 Keep in mind that existing setup will maintain this entry, clean one will not. you can always add those sections manually if really needed and you have specific use case and you know what you are doing.
Now EntityTypes will be sorter alphabetically for convenience sake
Fix for issue where grouping chunk range would be outside loaded chunk area which would have caused additional load on the server while loading in chunks to check mob limits
Lowered max grouped chunk range to 3, which will be more than enough and in most range of 2 is what you should be using for best performance and feature
Fix for block place limit message printing out raw block material name, now it will show materials appropriate name or even translated one if possible
Fix for IgnoreEntityWithPickedItem option not wanting to properly exclude mobs with items on them
Improved mob cleanup caused by command or auto clean, now we will remove entities based on their age which will mean that older ones will remain intact while new ones will be removed. This will address issue where entities spawning outside players owned land would effect entities inside, farms and such, of it during auto or manual cleanup
Fix for block placing limiter for 1.12 servers failing to determine correct highest block which was mostly relevant while placing none block type "blocks" like chests from top to bottom in single line without having any solid block above those.
Fixed issue with chests not being limited properly on older servers
Improved overall performance when it comes to block limit check
Added extra comment indicating that you can actually add custom blocks to that list. Just keep in mind that even tho check itself isint that heavy on server, having more checks than you actually need might add up, so keep it as short as you actually need it to be.
Fix for glow item frames not being threated in same way as regular item frames are
Added different message when we perform /mfm clean and there is nothing to remove, to be more clear what happen
Now we will be using general list splitter when listing what we removed instead of hard coded , Splitter itself will be located at CMILib plugin
We will now ignore invisible armor stands to avoid issues where you have hologram plugin creating armorstands and prevent you from spawning new one in that area as it will be over the limit
Fixing issue with armorstand placement introduced in latest build
Added option to disable natural entity spawning under EntityTypes section with NaturalSpawn. You will have example of its usage for the first entity in the list. This will allow you to disable specific entities from spawning in naturally, like bats, squids or any other monsters you would not want to have spawning in. Keep in mind that this only prevents natural spawns and you can still spawn in that entity with command, egg or spawner. By default it has no effect and in general will only take effect when you add this specific section and set it to false.
Update for 1.17 servers and transition towards
CMILib plugin utilization. Please download latest version of it if you want to use 2.x and newer version of this plugin.
Plugin size went down by 150KB due to this transition.
Better handling for EntityGroups world handling and more obvious initial example. Keep in mind that Worlds section should contain basic world names without any extra information.
Fixing issue where you would be able to place more item frames than allowed if you did it on edge of chunk
Added option to disable specific entity cleaning ether with /mfm clean or with auto clean feature. This allows you to have different behavior while auto clean mode is running vs manually performed command. You will get basic example of usage for DROPPED_ITEM type entity
Taking into consideration possibility that player might place armor stand with dispenser which could have bypassed armor stand limitations. Now we will prevent this action.
Added RemoveExisting for grouped entities and for regular ones to be able to define their removal or not when entity limit gets over defined amount. This effects only overflow and will not effect entity natural spawning. This will override global RemoveExisting value. Usage
Which will not remove villagers even if they get over the limit, but it would still prevent from new ones spawning in if that would be over the limit. Same thing can be used for groups
Now /mfm list (range) will properly output mob count from your current location and defined range. In case you want to check what is around you.
Added new option to log mob removal. Currently its in basic form and will simply record removed mobs and amount. This applies to clean command ant autoClean feature and will only record if removed mob amount if over specified amount. Some what convenient thing to have in case you want to keep track of which entities get removed most often. Disabled by default.
Fix for EntityGroups still taking effect even if you set it to false
Fix for issue related to 1.16 servers and entities teleporting throw nether portal and bugging out if they are in a overflow. Issue with how 1.16 handles this particular action
Now config file will accept custom entity types for EntityTypes section
Added option to define entity group worlds where this limitation should apply, so you can have different group limitations depending on worlds
Added option to define specific entity limits by world. So you can have default limit of 10 zombies while in nether it can be only 5 and block any zombie spawning in the end world and any extra world will inherit 10 zombie limit.
Small optimization to address some possible extra load when we are checking chunks which got unloaded, in which case we can ignore them. This applies for auto cleaner feature.
Slight change for /mfm list command behavior. Now we will output 15 instead of 20 most populated chunks. We will check more of them, so instead of checking only around players, we will check every loaded chunk, in case we have overpopulated chunks with mobs which are some what further away from player but chunk is still active. Additionally first 5 chunk entries will output mob count around them which will give some what more clear view if this chunk is potential cause of lag or does it simply have couple mobs in it.
/mfm clean got its own config section where you can define if you want to group chunks and in what range. So you can make command to behave differently than auto or entity spawn listener or make it exactly same
Updated base code and optimized it to have better performance. From initial testing it gained from 23% general boost to up to 80% in specific situations
Added option to disable natural iron golem spawns which usually happen in villages. This will prevent players from creating farms based around iron golems.
Added option to define max amount of entities we want to remove from a chunk or chunk group when performing clean command. This allows to limit the amount of entities we want to remove in one go. So for example, if you have set sheep limit to 10 in a chunk, but you have chunk with 17 of them and you have set max removed limit to 5, then it will take 2 clean ups to remove the overflow.
Added option to define max amount of entities we want to remove from a chunk or chunk group when performing auto clean. Same as clean command change.
Changed base behavior of autoclean to include some surrounding chunks around player instead of only checking chunk player is in. By default this will check in 3 chunk radius, but you can change it to anything between 1 and 5. This only applies when you have GroupChunks set to false.
Change for mob handling which picked up items. Now we will cache mobs in memory and will only check them instead of every monster with equipment. So pillagers, skeletons with bows and zombies with armors which they got from natural spawning will get removed, while any monster which picked up item, will remain, even if it's above allowed cap.
Renamed IgnoreEntityWithEquipment to IgnoreEntityWithPickedItem to better represent what it does now
Added option (enabled by default) to prevent entity removal if they have equipment. This will prevent you loosing your things if monster picked it up and was marked as overflow in that chunk and would be subject for removal. Now we will ignore those entities. They are still counted to overall chunk population, but we will not remove them.
Now auto clean up feature will output feedback message with detailed information what was removed. Only players with mfm.cleaninform permission node sees this message. Enabled by default, but you can completely disable this in config file.
Now /mfm hoppers will output message informing that there is no information about active hoppers instead of showing 2 separator lines
Added tabcomplete support for commands. Just a small convenience.
Fix related to 1.14 servers and hopper handling throwing error message
Now /mfm list will output list of chunks with detailed list (hover over) what type of mobs are present in that chunk. Max 20 different types. Descending list by quantity.
Added new feature to limit hoppers, pistons, sticky pistons and observers for each chunk. Can be bypassed with mfm.bypasslimit.[type] this will only apply for block place event at this point and will not take into account possible block transfers between chunks with help of pistons as this action can be quite heavy on server to recheck each moved block on each piston action. Unless some one really needs that one too, then give me a PM on discord.
Added option to limit how many tamed wolfs can follow one player. This is to limit and prevent from players getting into combat or farming mobs with 50 tamed wolfs. Any extra wolf will be seated on ground, so they will not lose them, they just cant really effectively use them. This action will be done on any general mob count check, so it can have some "delay" before you will see effect.
Added support for hoppers (1.8.x and up). Yes, its slightly out of what this plugin should do. But as its aimed to reduce load on server. Then why not
There is HUGE issue on minecraft servers with hoppers and especially with minecart hoppers which will "fire" item move events 20 times in one second. Even spigot settings are not helping here (bugged?). Sooo, what we have now is dynamic hopper transfer item rates. So more you use one hopper, lower its transfer rate will get up to defined point. This should not effect regular usage of them as transfer rate will reset it self after some unused time. But this will break any contraptions which needs fixed rates. Tho performance gains are more needed than some funky contraption.
Some example without hopper control and with one
and after MFM enabled
So we went down from 265 900 item transfer events down to only 4 400 which resulted in huge improvement. And this is only over 30sec sample with 170 hoppers and 20 minecart hoppers. Which are nothing if you are trying intentionally lag out server.
Feature is disabled by default. So don't forget to enable it.
Added /mfm hoppers to show chunks with most active hoppers in them, just to have easy way in finding "bad" players who is causing uneaded load on server ^.^
Updated base code of plugin to be more up to date.
Locale file handling change to have better support
Small optimizations
Small bugfix for reported issue
Added new command to list chunks with most entities in them with /mfm list (rangeInChunks) and you can click on any of lines to have suggested teleport command printed in chat field for simple usage
Added separate sections to define custom mobs like skeleton horses, elder guardian and so on. (Zombie_Hust is present in config file, but currently there is no API to check if zombie is Husk, so this will be "fixed" after spigot releases fixed version)