Feature Request: Automated Fishing
MuteTiefling opened this issue · 12 comments
Just a thought that pops into my head every now and again and that has become more relevant with the inclusion of your fish n chips recipes: Drone fishing.
I'm thinking it could possibly function by having a drone skim over an area of water, with a small chance to 'catch' a fish with each source block it passes over. There could maybe be a 'dumb' drone version similar to the harvest and guard drones, and then a prog widget for advanced drones.
The dumb drones would just let the items fall into the water, requiring the use of a collector drone. The smart drones would, of course, be able to pull double duty and do a pass to fish, then a pass to collect, but the prog widget would otherwise work the same, dropping items in world.
Both the dumb drone and the prog widget would require a fishing pole in their hand (or a new fishing net item if you felt so inclined, but why re-invent the wheel). Enchants on the tool would, of course, be taken into account when rolling loot, as well as all the other normal fishing variables like weather, biome, etc.
Could be quite fun. Yep, would do it as a harvest widget, with a "fishing drone" using a limited-configurability version.
Only thing is, is there a point to having an area? Players can fish the same single spot over & over and continue to get rewards...
I just thought it would look more interesting than a drone sitting still over the water, seemingly doing nothing.
I agree, the drone should zip around rather than just sit there. So maybe the fishing widget should require a minimum sized area? And that area needs to be all water source blocks...
Hrm, yeah maybe a minimum 5x5 area. I don't know if it should 'all' be water though, as that could make it difficult to use on the side of a river/lake/ocean.
Maybe just require 25 connected source blocks in the area? Since the dumb drone I'd kind of imagine working like the harvest drone where you plop it next to a chest and it works an area centered on that. You're bound to have a lot of land in that area.
Had a thought: the widget would iterate every (water source) block in the area, same as other area-type widgets would. But the likelihood of a catch would vary, depending on how many times / how recently the current block has been checked. So a too-small area would end up with very poor efficiency. There'd also need to be an upper limit on the area for performance reasons, but that might work...
(downside is it's difficult to give feedback to the player that the area size is suboptimal...)
Maybe some modifier for the rate too, so different fluids could potentially give drops at different rates, but that's it in a nutshell.
Ooh, I like that.
As for feedback, a simple note on the widget or in the book stating that it's more efficient over larger bodies of water should suffice. Then they can measure the rates themselves. The drone could also make some kind of sad noise if it checks a block and comes up empty. Or nlack/green particles on fail/success?
Side note, just thinking as an expansion to this... What if it was a recipe system that accessed a given loot table depending on the fluid? So if it's going over water it could skim for fish or, if a pack maker wanted, skim for resources like you see in sieves and such. If it's going over lava or other fluids, it could have entirely different loot tables associated.
Hmm, so a single default recipe that looks like:
{
"type": "pneumaticcraft:drone_fishing",
"fluid": "minecraft:water",
"loot_table": "minecraft:gameplay/fishing"
}
where minecraft:gameplay/fishing
is the standard fishing loot table.
And then the possibility of adding further fluid->loot-table entries in custom recipes. So the modpack maker would need to provide both the loot table and a recipe (like the above) mapping a fluid to that loot table.
Interesting...
One possible hurdle that has occurred to me: documenting this via JEI could be rather difficult, since the client has no view of loot tables (a server-side datapack concept). Sync'ing loot tables to the client just for this is probably also not wise.
Having said that, JEI doesn't currently show how vanilla fish are obtained, so it's maybe not a show-stopper. It would be nice if there were some way for pack makers to make this information available to players, though...
Hrm, yeah. Excellent point there. Not showing fishing is one thing because the player generally knows what to expect from fishing.
So what if fishing is simply handled as an exception and the entire custom portion uses a more standard list of weighted outputs built into the recipe? That way it could be displayed in jei.
Or leave it as a loot table and add in a description field that the pack maker can put a short message into. Tie it into the uses for the target block with a custom tab that shows the message provided...
But that still leaves a problem. You can't search by output to find your way to this. So if sifting gravel can get you silver nuggets, for instance, jei won't lead you to this method by looking at what produces nuggets...
Yep. Players will expect to see those nuggets in the JEI outputs.
Seeing up explicit recipes instead of using loot tables might be the only way. But I'll have a think about it.