Arable

Flexible, hardcore farming for the masses
Arable lets you tweak how fertile or hostile your world's arable land is. Do you live in a farmer's paradise, where every seed instantly grows to maturity? Or do you live in a desolate wasteland where crops wither and die, even catching fire in the searing heat of the sun? With Arable, you can control the agricultural impacts of all kinds of environmental conditions, including biome, growth stage, elevation, light level, and more.
Your world, your rules
Arable gives you a single, immensely powerful tool to bend the world to your whim: arable rules. Each rule has a set of conditions and a set of effects. If a crop matches a rule's conditions, the effects get applied. Effects can include anything from increasing or decreasing the growth rate (both the average rate and the variability) to a crop's chances of succumbing to a number of nasty effects such as being uprooted or incinerated. The best part about it is that you can have an unlimited number of rules per world and every rule can stack!
Features
Conditions
- block type
- growth stage
- biome
- wetness
- humidity
- temperature
- elevation
- weather
- time of day
- light level (total, sunlight, and/or blocklight)
Effects
- slow down or speed up plant growth rate
- affect crop growth variability
- ripen a plant or grow a mushroom tree
- cause plants to wilt, reversing growth
- uproot plants
- destroy plants, leaving nothing behind
- ignite plants
- bury plants under snow
- start a nasty (and contagious!) blight
There are several other plugins that I would like to integrate with, including Seasons and Terrain Control. I would also like to add the /arable command so you can query, modify, and reload arable rules without restarting the server. If you have any suggestions of your own, I would love to hear about them. You can let me know via comment, message, or ticket.
Configuration
There are four configuration sections: rules, defaults, worlds, and advanced. The following sections are brief introductions to each. For more in-depth information, including a list of supported conditions, effects, blocks, and biomes, check out the Configuration page.
rules
The rules section is the meat of your configuration file, it's where you list out all of the arable rules that you want to use. In fact, for single-world setups, the rules section is the only section you'll need to use. Here is a sample rules section that shows a small number of the available conditions and effects:
rules: desert-sun: # conditions blocks: [wheat,melon,pumpkin,carrot,potato,sugar] biomes: [desert,deserthills] minSunlight: 9 # effects rate: 0.5 spread: 0.1 wilt: 0.1 die: 0.1 burn: 0.1 cold-frost: # conditions maxBlocklight: 10 maxTemperature: 0.1 # effects frost: 0.1
defaults
By default, all rules in the "rules" section apply to all game worlds. If this is what you want, then you're already done! If, however, you want to override the default rule list, you need to create a "defaults" section. The format is simply a list of the default rule names. Here is a defaults section that applies the "desert-sun" rule by default (leaving out "cold-frost"):
defaults: - desert-sun
worlds
The worlds section lets you override the default rule list for specific worlds. You only need this section if you want to have worlds with unique rule lists. If a world is not listed here, it receives the default rule list. Here is a worlds section that only applies the "cold-frost" rule to WorldA, and only applies the "desert-sun" rule to WorldB:
worlds: WorldA: - cold-frost WorldB: - desert-sun
advanced
The advanced section is for modifying how the plugin does its job. This is a section that you will most likely never need to deal with, but it's here in case you need to exercise extreme control over Arable. Here is an advanced section that doubles the update interval (might be useful if you encounter lag):
advanced: interval: 2
Compatibility
The way the plugin works right now, it probably won't be compatible with plugins that restrict crop growth. I have an idea of how to fix this, though, and will hopefully get the time to do so in the future. If there are any major plugins in the farming and/or area protection genre that you have discovered are compatible or incompatible with Arable, please let me know and I'll list them here:
- Seasons and SeasonsPlusPlus both have their growth rates replaced with Arable's rates. There is currently no way to limit rules to particular seasons, but this is a feature I have decided to work on in the near future (see Ticket #2).
- TerrainControl custom biomes don't work in the biomes condition, but they do respond to humidity and temperature conditions.
Bugs
Seeing as this plugin is fairly new, there is a chance of it containing a bug or two. There is a small chance that these bugs may in fact be harmful to your server in some way. While I will be deeply regretful and work my hardest to solve any such problems, I cannot be held responsible for them; you use this plugin at your own discretion.
In the event that you discover a bug, I would greatly appreciate it if you let me know, preferably by opening a ticket.
Versions
v0.9.2 [beta] [CB 1.4.7-R1.0] - fix lag and memory issues on shutdown
v0.9.1 [beta] [CB 1.4.7-R1.0] - add missing crop types, grow cocoa pods
v0.9.0 [beta] [CB 1.4.7-R1.0] - moved data to "data" folder, new effects and conditions, bug fixes
v0.8.1 [beta] [CB 1.4.7-R1.0] - fixed several bugs, including the addition of Java 6 compatibility
v0.8.0 [beta] [CB 1.4.7-R1.0] - initial beta; looking for feedback and bug-squashing
-
View User Profile
-
Send Message
Posted Mar 5, 2013@ikarirain
This is a tricky point because it depends on how the new crops are implemented. Right now, it's not possible because I don't accept IDs inside the "blocks" condition. However, even if I did accept IDs, I would still need to know how each crop grows. This includes questions like:
The simplest solution to solving this would be to assume all unrecognized crops grow like wheat, but I doubt this would be satisfactory. I could conceivably add in a separate config section for defining how custom blocks grow, but this would be somewhat complicated.
-
View User Profile
-
Send Message
Posted Mar 5, 2013This plugin does everything I'd want to see out of a farming plugin. Full and total control over how crops behave.
However, I do have a question. If I were to run other mods on a server, mods that introduced brand new crops with brand new id's and names, would this plugin be able to control those crops as well? And if so, would I be able to use ID's or would I have to specify by name somehow?
-
View User Profile
-
Send Message
Posted Mar 3, 2013Hey there!
Just wanted to say that your plugin is awesome-sauce. My entire server is based off of it, and it works flawlessly. Keep doing what you're doing sir.
-
View User Profile
-
Send Message
Posted Mar 2, 2013@kangarko
If you still have problems, let me know and I'll look into further optimizations. An easy way to vastly decrease Arable's footprint is to change the advanced "interval" option (as shown above):
Do you notice any lag while it's running? Maybe "can't keep up" messages? Is this constant or only on shutdown? I think I might make a higher interval be the default in future releases.
A higher interval means less fine-grained growth, but also less processing required.
-
View User Profile
-
Send Message
Posted Mar 1, 2013@Hangar
Thanks for reporting this, it sounds like it could indeed a serious problem with Arable. To conserve space in save files, Arable goes through each of its entries before saving and makes sure that the tracked blocks haven't been deleted.
If you are willing to test this theory by using this advanced section and seeing if the problem still occurs, it would really help me out:
Thanks again! Oh, and sorry for the late reply, I haven't been able to spend nearly as much time on Arable lately as I've wanted too.
Also, how much memory are you giving your server? I'm trying to see if I can replicate the problem, but I keep getting GC errors while loading the chunks instead of memory errors while shutting down.
edit: I think I might have fixed the issues. Instead of checking chunks on shutdown, I now only check them right before they're unloaded. This should prevent the loading of unloaded chunks. Initial testing suggests that this 0.9.2 file is substantially more efficient (both in time and memory use) on shutdown. I created a server setup that ran out of 2GB of heap space on 0.9.1 but will shutdown in only a few seconds with 256MB heap space on 0.9.2. Let me know if this fixes your problem.
-
View User Profile
-
Send Message
Posted Feb 23, 2013I've noticed my test server hanging for long periods when shutting down lately and it starts doing that when it's trying to disable this plugin. It actually ran out of memory this time after 5 minutes. Is it possible there's some kind of leak or issue with shutdown? I never get out of memory errors on this server. It's very light on plugins and never has more than 2 players on it.
Does Arable store anything when chunks are loaded even if no one is in them by any chance? I had a render of a large world going before shutting down this time and it's set to generate chunks that aren't yet generated (autogenerate-to-visibilitylimits: permanent). However, Dynmap seems to cleanly finish its processing before this error appeared so I'm just guessing here. Rendering a world this way doesn't normally cause any OOM issues but I'm not sure how Arable does its thing, and since this is a very big world, if it's somehow storing and not releasing data that might explain it.
http://pastebin.com/cYLarG14
-
View User Profile
-
Send Message
Posted Feb 10, 2013@Parsifal21
Yes. Please PM me if you want to know anything further.
-
View User Profile
-
Send Message
Posted Feb 10, 2013@keharriso making Rules like that
Basic Rate is 0.25 (x4 time need then normal)
IF "day" "Clear" Rate going to 0.0721?
rules:
day-rate: {times: [day], rate: 0.275}
night-rate: {times: [night], rate: 0.25}
dusk-rate: {times: [dusk], rate: 0.2625}
dawn-rate: {times: [dawn], rate: 0.2625}
clear-rate: {weather: [clear], rate: 0.2625}
rain-rate: {weather: [rain], rate: 0.2625}
thunder-rate: {weather: [thunder], rate: 0.2375}
snow-rate: {weather: [snow], rate: 0.2375, frost: 0.01}
-
View User Profile
-
Send Message
Posted Feb 9, 2013@Parsifal21
The rates are multiplicative, so in that case, a night in hell would have crops growing at 0.425 of their normal rate.
Yes, you can add additional conditions in that format.
-
View User Profile
-
Send Message
Posted Feb 9, 2013@keharriso
ARE U SERIOUSLY?!
You are genius
ps.
rules:
day-rate: {times: [day], rate: 1.25}
night-rate: {times: [night], rate: 0.85}
dusk-rate: {times: [dusk], rate: 1.00}
plains-rate: {biomes: [plains], rate: 1.00}
hell-rate: {biomes: [hell], rate: 0.50}
IF "night" "hell biome"
Rate going to 0.85? OR 0.50? or 0.675
pss.
day-rate: {times: [day], rate: 1.25, blocks: [Wheat,Melon]}
Is it Works right?
-
View User Profile
-
Send Message
Posted Feb 9, 2013@Parsifal21
The configuration I posted is already a valid configuration. If you like it, you can use it yourself! ;-)
It will also work with other conditions and effects. If you are interested in why it works, you can have a look at the YAML language.
-
View User Profile
-
Send Message
Posted Feb 9, 2013@keharriso
Yes! like that! :)
if i can set another effect/condition like that
will be AWESOME :)
ps.i think you are Genius
-
View User Profile
-
Send Message
Posted Feb 9, 2013@Parsifal21
I'm not sure that I understand what you mean. Are you saying that you would like an easier way to specify rates?
So would your proposal be instead of this?
As an aside, the dusk-rate and plains-rate are actually not necessary; the default rate is already 1.
-
View User Profile
-
Send Message
Posted Feb 9, 2013@keharriso
:'( i have Prob w/ my card cant Donate
suggestion
can u make Rules like that?
World:
Times:
day: 1.25
night: 0.85
dusk: 1.0
biomes:
plains: 1.0
hell: 0.5
i need make 100000+ Rule for use all palamerter xD
-
View User Profile
-
Send Message
Posted Feb 5, 2013Thanks, everyone, for your interest! It's a lot of work to keep up with you guys, but I promise I'll do my best. :-)
@Parsifal21
I'll try to have a written guide out before the end of the week. It'll cover all of the conditions and effects in depth, with examples and explanations. I'm trying to get the next release out soon, too, but I realize a guide is very important.
And yes, that's my account.
@michiaru
Yes, I plan on making a video after I've added in a few more features, including the /arable command. I don't want to make a video only to have it be outdated in a matter of days. In the meantime, you can message me or leave a comment if you want to know how to achieve a specific goal.
-
View User Profile
-
Send Message
Posted Feb 5, 2013could u make a video?
-
View User Profile
-
Send Message
Posted Feb 5, 2013@Q2Lummox
As of right now, Seasons is only compatible to the extent that you can replace its growth rates with that of Arable. Unfortunately, I have yet to add in a condition that will let you apply rules to specific seasons. I have, however, decided to work on this in the future (see the relevant ticket). It won't make it into the next release, but possibly the one after.
I apologize that the plugin description is unclear, I'll change it to reflect the fact that there's no "seasons" condition yet.
-
View User Profile
-
Send Message
Posted Feb 5, 2013Any way to configure according to the season of the "plugin" "Seasons"?. I see you have compatibility with this plugin, but I do not understand in what sense ...
-
View User Profile
-
Send Message
Posted Feb 4, 2013General? xD how to setup Wheat need beach biome and sun light i can understand from Configuration page. but most pplz cant understand from that :( like "what is Wetness??" "how can make Grow Faster??"
ps. Ur paypal addres is keharriso@gmail.com?
-
View User Profile
-
Send Message
Posted Feb 4, 2013@Parsifal21
That's very kind of you, I'll set up a donation button for anyone who wants to help subsidize my development time.
What sort of guide are you looking for? A written tutorial that goes through everything about the plugin? I'm always looking for documentation suggestions; it's hard for me to guess what'd be useful to users.