Content: Slate Blackcurrant Watermelon Strawberry Orange Banana Apple Emerald Chocolate Marble
Background: Slate Blackcurrant Watermelon Strawberry Orange Banana Apple Emerald Chocolate Marble
Pattern: Blank Waves Notes Sharp Wood Rockface Leather Honey Vertical Triangles
Welcome to TerraFirmaCraft Forums

Register now to gain access to all of our features. Once registered and logged in, you will be able to contribute to this site by submitting your own content or replying to existing content. You'll be able to customize your profile, receive reputation points as a reward for submitting content, while also communicating with other members via your own private inbox, plus much more! This message will be removed once you have signed in.

  • Announcements

    • Dries007

      ATTENTION Forum Database Breach   03/04/2019

      There has been a breach of our database. Please make sure you change your password (use a password manager, like Lastpass).
      If you used this password anywhere else, change that too! The passwords themselves are stored hashed, but may old accounts still had old, insecure (by today's standards) hashes from back when they where created. This means they can be "cracked" more easily. Other leaked information includes: email, IP, account name.
      I'm trying my best to find out more and keep everyone up to date. Discord (http://invite.gg/TerraFirmaCraft) is the best option for up to date news and questions. I'm sorry for this, but the damage has been done. All I can do is try to make sure it doesn't happen again.
    • Claycorp

      This forum is now READ ONLY!   01/20/2020

      As of this post and forever into the future this forum has been put into READ ONLY MODE. There will be no new posts! A replacement is coming SoonTM . If you wish to stay up-to-date on whats going on or post your content. Please use the Discord or Sub-Reddit until the new forums are running.

      Any questions or comments can be directed to Claycorp on either platform.
craftygeek

Chicken coop mechanics (Nest)

7 posts in this topic

Wall of text alert: scroll to the bottom for the TL;DR

The animal husbandry of chickens is borked, when compared to reality. First of all, chickens average about 21 days of egg-sitting, not the months of gestation implemented now. Heck, they don't even gestate, they egg-lay. Eggs do not get laid haphazardly; they get laid in nests, or at the very least, in the same general location as previous lays - no chicken will lay an egg, and forget about it, like current chickens. If a chicken lays unfertilized eggs, it'll often keep sitting on them for longer than the 21 days, not knowing that it won't hatch eventually.

I know that this is mainly derpiness of a core MC mechanic - breeding is done with feeding and gestation and live birth etc - rather than an oversight on TFC's part. But, I think that with the addition of one block, one tile entity that can store/implement every single mechanic I'm going to suggest below, that chicken farming can be elevated to the level of realism of hide-tanning and metalworking in TFC. Maybe this replaces the current chicken breeding, or just replaces random egg-spawning... (Again, scroll to bottom for the quick summary.)

My suggestion:

Add the Nest block/tile entity. Craftable by players with a lot of (processed?) sticks, or with wheat/the non-grain version of something that can become a grain (plus, just maybe, some failure-prone mechanic like you might have to deal with in a theoretical basket weaving setup), or discoverable in world-gen near high densities of chickens (with a nerf-able drop-on-break probability). I'm envisioning about the height profile of a half-slab, or maybe the same dimension as the top of a food-prep table in the TFC food mechanic.

Female chickens/hens within a radius will gravitate towards an empty nest, and lay 1 egg every 2-3 days, staying within radius/2 of the nest when not sitting, and radius/4 or something when sitting (just enough leash to take a food break and top off the chicken's internal hunger bar).

Male chickens/roosters, when fed by the player, will gravitate towards occupied nests, with a chance of inseminating the hen, and then will not gravitate towards that nest for awhile. (The nest can 'broadcast' out its occupancy state - empty, non-inseminated occupied, inseminated-occupied, and sitting-occupied - to the chickens in its radius, often giving a false inseminated-occupied reading [raise this to nerf rates as appropriate, or leave this as a 0 if you want to keep the 100%-breed-when-fed mechanic]. I'd assume this could be similar to the wheat attraction mechanic.)

A nest has a 5 or 6 slot inventory, only accepting one egg per slot, not fillable by the player. When a hen lays an egg, it randomly decides whether the hen should go into sitting/not-laying mode or not; if the nest is full, it always goes into sitting mode. If the hen sits, it doesn't lay again until all eggs have either hatched or spoiled (see below), or the nest is emptied by the player.

Each egg slot maintains a metadata of a randomizeable count down for how many days until hatching (a negative countdown can signify not-fertilized eggs). Each day the nest is occupied by a sitting hen, the counters decrement. If left unattended by the player, fertilized eggs hatch when their count down gets to 0.

Unfertilized/negative-counter eggs 'spoil' (either changes to spoiled-egg item that persists and stops empty-nest broadcasting; and/or just despawns) when the count gets down to, say, -30 (maybe make spoil and hen departure separate events, say, -15 and -30 respectively). The hen can 'choose' to abandon unfertilized eggs earlier by randomizing the initial counter appropriately - starting sitting on a -5 egg will save 4 days, for example.

If tended/emptied by the player, unfertilized eggs are the same egg item that is already in the game. Spoiled eggs (if they don't auto-despawn) are just trash, unless a poisoning mechanic makes sense. Fertilized eggs, if pulled out when their counter is >=, say, 15 days remaining, can be considered as unfertilized/underdeveloped enough to be normal. If, however, they were fertilized and developed beyond that, you find that on cooking it spoils - it is a separate item type, still called Egg, that just will not cook up well. (The challenge here becomes, how do you prevent the player from just storing an egg from a known good batch in their coop, and catching the bad eggs by virtue of their not-stacking? Can stackable items have differing metadatas by some voodoo I am unaware of?).

Nests can become untended, if the hen dies, gets lured away by wheat grain, and maybe random walk-away choices every once in awhile. A nest with eggs can have an untended-days counter, which at a certain threshold, will cause all eggs to become spoiled. Untended nests (and even tended nests where the chicken is off foraging, to refill hunger as necessary) are trample-able by players and mobs, breaking the eggs and maybe even the nest - only the sitting/latched-on chicken can walk onto the nest without being destructive.

This particular mechanic is unlikely, but - If any eggs from a clutch hatch, the chicks of course latch on to the hen. But - could the hen be made 'aware' that it has chicks? So it won't lay again until the chicks mature at least somewhat?

This one block would also foster some additional behaviors/complexities to husbandry - ex: sorting the roosters away from the main coop so you can be less/not at all likely to get bad eggs; daily/frequent egg collection, to prevent spoiling and optimize chicken efficiency; making a coop setup to prevent the trampling mechanic; designing of coops so that food is readily available for sitting hens (maybe grain fed to hens, rather than initiating a breeding mechanic, becomes pure hunger-buffing, at a high potency?).

TL;DR:

Craftable and/or world-genned nest attracts hens, which lay an egg into the nest every few days. Hen-occupied nests attract player-fed roosters, and insemination may occur. Once the nest is full (5-6 egg capacity), or randomly when not full, the hen stops laying and goes into sitting. While sitting, the hen keeps close to their nest (feeding mechanic important). Each egg slot counts down a semi-random days-to-hatch number for fertilized eggs, or a negative number for non-fertile eggs. Eggs start at ~21 (fertilized) or ~-3 (non-fertilized), hatch at 0, spoil at -15ish, and disappear/the hen leaves at -30. Eggs harvested between -1 and -15, or 15-30, are good/edible. Eggs between 15 and 0 are too developed; they are not fit for cooking, but the player isn't tipped off to that until he tries to cook. Eggs less than -15 are spoiled (discernable by the item switching to "rotten egg"). Hens who have recently had hatchlings might not lay again for a certain interval.

4

Share this post


Link to post
Share on other sites

I did not read everything, but chicken reproduction is of course a think that can be improved. I think that Bunk once said he want to improve it too. I don't know the detail but I think it would be great.

0

Share this post


Link to post
Share on other sites

Great job!! This is a neat idea, and in imagining what this would be like in the game it really seems to flesh out chickens a lot, and it seems to fit TFC very well. I'm impressed.

Eggs

I'm with you to a certain point. Giving items metadata is generally a bad idea as it causes clutter. A better solution is probably worth talking about.

Here's a suggestion:

There are two kinds of eggs, "egg" and "fertilized egg". An egg can be removed from the nest and cooked for food. A fertilized egg (f.e.) has metadata, but that's okay because there is no reason to remove it from a nest. Its only purpose is as a timer for a new chicken. The f.e. has metadata much like an item being cooked, but it doesn't cool down. Two of them won't stack with each other, but since they won't stack in the nest and the only reason you'd ever take them out is to put them in another nest again, that's not a big deal.

It doesn't seem like you accomplish much by adding in spoiled eggs. Sure, if you're off mining for a week maybe you come back and have no eggs. But that's not really how raising chickens works. You come back and have to sort the new eggs from the old ones, but you still have new eggs. Since adding data for old eggs just clutters up the game with trash, why not just hand-wave the sorting process and let the eggs not spoil? Similarly you only harvest the carrots that are big enough to be eaten as food, you don't harvest all the withered, bug-eaten carrots and have to sort them as the player.

You're probably thinking that you shouldn't know an egg is a f.e. just by looking at it. Okay yeah, but you have to initiate the fertilization from what your plan suggests, so you should have some feedback that tells you it was successful and not bugged (much like finding out a cow is preggers by clicking on it). A f.e. should be an obviously different item from an egg.

Nests

I don't want to devote any resources to something that can be trampled. How about a nest box instead? Chickens make their own nest in the wild and lay one egg in it at a time. You can trample those, or collect them (I'm imagining punching it and it pops out, like a mushroom does) and put them on a nest box to get egg storage. A chicken with an unoccupied nest within a certain radius doesn't try to make another nest. The nest box recipe could be a chest (or ceramic equivalent), planks or bricks on either side, and sticks above the planks/bricks. Place it in the world, collect a nest, right-click the nest box to "plant" the nest, and now your nest box becomes a more permanent nest that chickens will use and that will store more than one egg.

I suggest that chickens will probably want a dry nest, so will try to make a nest on a block with some cover (leaves from a tree especially, or within tallgrass if no trees or overhangs are nearby). Maybe a nest in the rain gets "trampled". You'll want to put something over your nest boxes to block the rain.

0

Share this post


Link to post
Share on other sites

Great job!! This is a neat idea, and in imagining what this would be like in the game it really seems to flesh out chickens a lot, and it seems to fit TFC very well. I'm impressed.

Eggs

I'm with you to a certain point. Giving items metadata is generally a bad idea as it causes clutter. A better solution is probably worth talking about.

Here's a suggestion:

There are two kinds of eggs, "egg" and "fertilized egg". An egg can be removed from the nest and cooked for food. A fertilized egg (f.e.) has metadata, but that's okay because there is no reason to remove it from a nest. Its only purpose is as a timer for a new chicken....

Nests

I don't want to devote any resources to something that can be trampled. How about a nest box instead? Chickens make their own nest in the wild and lay one egg in it at a time....

I think 'metadata' was the wrong term re. egg countdowns. i meant, the counters would be remembered by the nest, not added to the egg, kinda like how a vanilla furnace, rather than changing warmth metadata on a smelt, just counts time with a progress bar. eggs get changed from fertilized to hatched or to spoiled - eggs can spoil on the nest, my family raised chickens and collected the eggs for food purposes, we ran into both spoiling and too-developed issues like i discussed - based on counters that are not egg metadata, but nest metadata/counters.

the spoiling mechanic is easy to do with disappearing eggs, to prevent trash. i was just spitballing with the multiple items thing.

the reason having counter metadata on the fertilized eggs doesn't matter is, once removed from a nest, it doesn't matter how close it is to hatching, beyond that good/bad threshold. no chicken will sit on an egg that's been removed from 1 nest and put back in another, they can smell human scent on the egg, which keeps them from nurturing it. so, making players only able to pull from, not insert into, nests makes sense, and thus makes the only egg-type distinction that matters 'fertilized and unhatched' v 'unfertilized' v 'spoiled' - if the spoil mechanic is more than just disappearing.

so, this idea doesn't add metadata, and hence clutter, to eggs, it lets the nest manage all that, just changing 'gross'/not-meta-based item types when certain thresholds are hit.

re. egg count in nests. no chicken will sit on just one egg, they economize with clutches more. so a capacity of at least 3 is necassary, if not 5-6.

re. nest box - guard railings etc for nests can be made with the pre-existing plank/slat placing mechanic, and elevating them off the ground - maybe with a plank/log block - negates stepping onto them. and, this fits the multiblock theme of tfc well, too. it might be cool to have a dedicated/aesthetic nest box, but it's not required, there are still trample prevention mechanisms out there.

thanks for your feedback and giving me an opportunity to charify what i meant by metadata.

0

Share this post


Link to post
Share on other sites

cool idea, makes eggs a not so easy and infinite food source, in TFC I used to be able to survive on just 1 chicken laying eggs in a pen near my house

0

Share this post


Link to post
Share on other sites

Im just abit confused with all of this. I get the main ideas, but the little nitty stuff just flies over my head, so ill explain my ideas. Correct me if im wrong or if it has already been suggested. Posted Image

Anyway when eggs are layed in the nest, they would all be the same. Eggs would then have a chance to change to either unfertilized, unfertilized, or spoilt. This change would happen while the eggs are in the nests. All the data the eggs would need would be stored in the nests.Fertilized would develop while in the nests, and if the conditions are right. up intill this point, the eggs have no metadata. When you take eggs out of the nests, this is when they are give the metadata, which would either be unfertilized/eatable or spolit. When fertilized eggs are take out of the nest, and if they havn't hatched, or mature enough they would turn into spolit eggs. This would be because you can eat them, and by making them spolit you are saving inventory space.

On nests- personally i think nests should be around in a couple of different ways. the first way as suggested would be a stick/wheat combination that would both spawn in the world and be craftable. (it would get rid of your sticks!!!) It would be able to be destroy by other animals, yourself, and weather. It would have a lower chance of fertilized becomeing mature enough to survive, although it would have a higher chance of unfertilized eggs becoming spolit.

The second nest would be player craftable, and would be much like suggested. IT would be a box, that would keep the chickens warm and would offer more comfort. IT would not be destroyed by being stood on, and would not be affected by weather. It would have a higher chance of fertilized maturing and a lower chance of unfertilized eggs becoming spolit. It would need to be restocked with crops/sticks reguarly.

Note: can i just say that fertilized eggs should only become fertilized if there is a rooster around. (correct me if this was already said)

I would also like to see the implementation of a feeder. It would be a simple device that could be placed in a pen and would store food for animals. when an animal is hunagry, they would go over to the feeder, and eat a unit of feed that is in the feeder. (i know i don't stand around all day feeding my chickens when they get hungary). This idea could also be applied to other animals, although would have to be larger, and would be like a trough.

Lastly, my idea would be by products. After a period of time the hay/sticks inside a nestiong box would become old, worn out, and covered in manure. Thsi would need to be removed and replaced. This would be able to be placed around plants or placed on the ground to recover, produce richer soil. spolit eggs would need to be destroyed, as there is nothing for them to be used for, except for poison, or cures of dissease.

Sorry if i went a little off topic, or if it doesn't make sence.

0

Share this post


Link to post
Share on other sites

bump, this post should remain up in the suggestion sub-forum

0

Share this post


Link to post
Share on other sites