It's well know that Eco TPS is not good. Much worse than Skyblock and I can only assume that is due to the large scale farms we have. In time, they are only going to get bigger and more abundant. Every crop has a chance to grow every tick and that needs to be calculated so for a server with many millions of crops, there must be considerable effort in calculating all that. The suggestion/question is, that rather than having croppers collect crops as they grow randomly and then sell them, can croppers instead, disable crop growth (of the type it collects) in the chunk they are placed in and then just use the total number of crops in that chunk, and the average growth times of crops to work out what the yield is likely to be per second or per minute and just pay the owner that amount. A 7x7 wheat farm of 22 layers would have roughly 275,000 crops, so rather have the server processing all the growth chances, the change in stages, etc of 275,000 crops, every tick, it just uses the number of crops in that chunk and performs one calculation per second (or per minute). From a player view point, it would appear almost the same as it is now except we wont see the crops changes state and there would be no variance in the income, except where croppers are not in range of the player or changes due to the fluctuating sell price of those crops. We would still have to build the farm so it would cost the same and take the same effort it does now to get established. I've only looked at one source for the below information so it might not be 100% accurate but the idea would be the same. Each wheat crop takes on average 37200 ticks to grow to maturity which is 1860 seconds if TPS is at 20. So if a chunk has 1860 wheat crops, we assume it will grow one every second. If it has 3720 wheat crops, it will grow 2 per second and that chunk will max out at 3 per second when it has 5580 wheat crops in it. So the calculation per second would simply be: number_of_crops/seconds_to _mature*current sell price. This will obvioulsy max out at 3*current_sell_price due to croppers only collecting 3 per second. The number of crops isn't going to change a whole lot so this would only need to be checked every 30 minutes. New crops would need some time to reach maturity anyway so no real loss to players for having newly planted crops not counted. We would lose some variability in crop growth due to conditions such as moisture levels and light levels but we might all care to live with that if it improves TPS.
Some issues I see Checking chunks for crops would cause lag Ignoring data other than the number of crops in the chunk would cause significant changes in farm design Sugarcane/cactus farms could have a block immediately above the crop, since it would not check for growing space melon/pumpkin farms could be made from entire layers of tilled dirt, with no regard to alternating crops, surrounding farmland (significant difference for those who tile with moss), or even having an empty space for the melon/pumpkin to grow. wheat farms would grow at a fixed rate, meaning rows of wheat would yield half that of a full field Stifle innovative ideas such as using bonemeal or bees to advance crop age
Yeah, I'm aware of all that, but to be honest a server based around massive farms is not a great idea and something needs to be done to improve TPS. Checking chunks for crops only need be done every 30 mins or so. It's already checking for maturing crops every tick I suspect and I don't know if that doesn't involve checking all crops anyway. I don't think anyone is using bonemeal or bees to the scale of cropper farms and improved TPS would likely outweigh any benefit of that.
Given that there are already noticeable lag spikes when tax happens, and that checking crops would be a much more costly computation, there'd end up being a much larger lag spike when checking crops in a chunk. Instead of checking all blocks for mature crops (likely a very costly computation), it probably intercepts the growth method of certain crops in crop hopper chunks (much cheaper), which I don't think contributes to lag at all. Bonemeal could be a consideration when hostile (skeleton) spawners are added. Not a thing currently but we are looking at the future of the server after all.
This could be staggered to remove spikes. Whether it be the crop growth, the calculations or both I suspect it contributes largely to constant poor TPS, One lag spike every 30 minutes is more desirable than a constantly low TPS I won't bother with hypotheticals, this was a questions as much as a suggestion and Dex will consider the facts. Maybe, I don't see this being done large scale though. The redstone to automate it would be costly.
I put support, but honestly I don't know enough about this to understand if it would make tps/lag better or worse. What I do know is that something needs to be done about the poor server performance, because my farm is only making a fraction of what it should be. Any change seems good at the moment.