[Plugin] Chicken Coops! / Hühnerstall [Early release]


  • Chicken Coops! [version 0.7.4]
    Want to raise your own chickens in Rising World? This Chicken Coop plugin adds chicken coops to give players an easy way to raise their own cute and tasty chicken farm!
    How does it work?

    The main part of the chicken coop plugin is craftable at a sawmill under the "Miscellaneous" category. We started designing a chicken coop model, but we realized that we've seen the players in this community create some truly amazing works of art with this game's powerful building capabilities. We don't want to take away any freedom in creativity, so what you get when you craft the item is a simple nesting box which you can put it in your chicken coop. This way, players are still free to build their own unique chicken coops however they wish! :)


    This serves as the core of your chicken coop, so make sure you place the box somewhere you can interact with it easily.


    Afer a specified amount of time, Chickens will spawn near the coop after placing the box, up to a pre-determined maximum.
    Chickens will wander around, but will not stray too far from their coop. This means players won't need to fence-in their chickens, but may if they wish to do so.
    If you kill a chicken (presumably to eat it) a new chicken will eventually take it's place.
    After chickens are present at the coop, they will begin laying eggs in the nesting box, which can be collected by the players.


    If you wish to move the box later, or remove the chicken coop item, you can by interacting with the box and choosing "Remove" from the menu, but keep in mind this will also kill all of the chickens currently kept at this chicken coop. This is done to prevent mischievous players from spawning chicken-armies.


    Cooking update!
    Ready to do something with all those eggs now?
    First, craft a skillet at a workbench in the "Cookware" category.


    As of 0.7.4 the only surface you can put a skillet on is a cooking grill (the one that goes over a fire, not the standalone grill object.)
    I'm trying another approach to placing an object this time, the big difference you'll notice is there's no preview for placing the skillet.
    Raycasting, which is required for a preview, is an expensive operation, and I'm trying to keep the load on servers to a minimum with the plugin.
    So to place the skillet you'll have to equip the skillet, aim at a cooking grill on a "fireplace" and press the secondary action (right mouse button.)
    We used the Raycast that's already performed when a player clicks the button, in an effort to reduce the performance impact to a minimum.
    Unfortunately, you'll need to make sure the crosshairs are actually over the grill object, not between the rungs.


    We need your help!
    Play with the new update, and let us know what you think of the skillet placing method I've implemented in this update. I'd like to improve it, but your suggestions and feedback will be a great help in deciding how we can make it better. So please write back and tell us your ideas! :)


    So, once you've got a skillet on the fire, drop an egg in there! (right mouse click)
    Eggs cook fast, and burn faster! so you might want to stay with your egg while it's in the skillet.

    It'll only take about a minute for the egg to cook, look for the bright white coloring. Don't wait too long!


    Get the egg off the skillet in time, and enjoy breakfast! Goes great with bacon! :)


    So far, this has been a blast to work on. I've been working on the code, and LexiByte made us some great models and textures! That egg looks pretty tasty :)
    Let us know what you think of it so far, we love hearing feedback!


    This is an early release of a work-in-progress!
    It's not done yet. There are more features planned that haven't been implemented or debugged yet.
    Soon we will add player-protection for the coops, as right now they'll be accessible by anyone. (Added!)
    Also, as of 0.6.4 the eggs won't be good for anything but taking up inventory space. (You can eat the eggs now!)


    Options and info for server admins:
    The plugin ships with a prefs.txt file which lets singleplayer users and server admins configure a few options for the plugin. Here's a peek at what options are available:


    Code: prefs.txt
    # Adjust the values in the lines below to configure the
    # Chicken Coops plugin preferences for your server
    playerCoopLimit=2 # limit of how many chicken coops a player can have
    chickenRoamRange=12 # how far away from the coop the chickens may roam
    chickenSpawnLimit=6 # the maximum number of chickens a coop will spawn
    chickenSpawnInterval=45 # (minutes) how often a new chicken can spawn at a coop
    layEggInterval=24 # (minutes) how often an egg will be laid in the coop

    New Installs:
    Extract the contents of the zip to your plugins folder


    Updating from an old version:
    Simply overwrite the old plugin folder with the contents of the new zip file. The update should work seamlessly with data saved in the older version.
    Note: If you cuztomized your settings, you may want to back up your "prefs.txt" file before overwriting it with the one from the new zip archive.

    Known Issues:
    There seems to be a problem involving placed skillets in multiplayer, I'm looking into the problem now and will update again when I have a solution.
    - Fixed! Please update to 0.7.4 if you haven't already.


    Remember:
    This is an early release and is not complete yet. The download provided here is just to let players and admins play with the features as we've completed them so far. Please feel free to let us know your thoughts, opinions, or if you have any comments or suggestions! :)


    Happy chicken farming! 8)

  • (Deutsch ist nicht meine Muttersprache, aber ich werde mein Bestes geben.)


    Möchten Sie in Rising World Ihre eigenen Hühner aufziehen? Dieses Plugin für Rising World fügt Hühnerstall hinzu. um Spielern eine einfache Möglichkeit zu bieten eine eigene Hühnerfarm eröffnen.


    Wie funktioniert es?
    Der Hauptteil des Hühnerstall-Plugins kann in einem Sägewerk in der Kategorie "Verschiedenes" hergestellt werden.
    Wir möchten, dass die Spieler frei bauen können, so wie sie es wünschen. Der herstellbare Gegenstand ist also ein Nistkasten.
    Dies ist der Kern Ihres Hühnerstalles. Stellen Sie daher sicher, dass Sie den Karton an einem Ort aufbewahren, an dem Sie problemlos damit interagieren können.
    Nach einiger Zeit, Hühner erscheinen in der Nähe des Hühnerstalles.
    Die Hühner werden wandern, aber nicht zu weit vom Hühnerstall entfernt sein.
    Wenn ein Huhn getötet wird, wird ein anderes nach einer Weile seinen Platz einnehmen.
    Hühner legen Eier in die Schachtel, die die Spieler abholen können.
    Denken Sie daran, dass das Entfernen der Schachtel die Hühner tötet. Dies soll verhindern, dass schelmische Spieler zu viele Hühner haben.


    Dieses Plugin ist noch nicht fertig. Weitere Funktionen werden in Kürze hinzugefügt.
    Bald werden wir den Hühnerstall schützen, um Diebstahl zu verhindern.
    Die Eier können noch nicht verwendet werden. Bald können Sie sie kochen und essen.


    Ausführung
    0.7.4


    Schutz für den Hühnerstall wurde hinzugefügt.
    Sie können jetzt die Eier kochen und essen!
    Machen Sie eine Pfanne an einer Werkbank unter der Kategorie "Cookware" (Kochgeschirr.)
    Zeigen Sie auf einen Grill auf einem Feuer und klicken Sie mit der rechten Maustaste, um die Pfanne zu platzieren.
    Klicke mit der rechten Maustaste auf die Pfanne, während du ein Ei hältst, um das Ei zu kochen.
    Weitere Details finden Sie in den Bildern im oberen Post.



    Optionen:
    Es gibt eine Datei mit dem Namen "prefs.txt" mit Optionen


    playerCoopLimit=2# Grenze, wie viele Hühnerställe ein Spieler haben kann
    chickenRoamRange=12# Distanzhühner können gehen
    chickenSpawnLimit=6# Die Grenze der Hühner pro Hühnerstal
    chickenSpawnInterval=45 # (Minuten) Wie oft wird ein Huhn erscheinen
    layEggInterval=24# (Minuten) Zeit, um ein Ei zu legen


    Möglicherweise möchten Sie Ihre "prefs.txt" vor dem Aktualisieren sichern




    Bekannte Probleme:


    Es scheint ein Problem mit platzierten Pfanne im Mehrspielermodus zu geben. Ich beschäftige mich jetzt mit dem Problem und werde es erneut aktualisieren, sobald ich eine Lösung habe.
    - korrigiert - Bitte aktualisieren Sie auf die neueste Version 0.7.4


    Habe Spaß! :)

  • Wow you are very busy atm with 3 really good plugins that i can see becoming very interesting ( the cooking & chicken coop is more for me) :thumbsup: As for player-protection for the coops wouldn't that be covered by area protection (if the player/server owner has it installed?)

    Plugin projects tend to snowball over here a little bit lol! I thought "What do I want to cook next? Eggs... How do I get eggs? I need chickens... How do I get chickens? hmmm..." And then a plugin project starts from a simple idea and grows until it starts taking up a large chunk of my free time ^^ . But I love this game and I love Java, So I put the two together and share the results to hopefully let others enjoy the things I can add to the game.
    As for the player-protection, I'm honestly not sure how the plugin works, I haven't even looked into it. It possibly could prevent players from stealing eggs if it can prevent a player opening a custom chest, but I think another player may still be able to remove the entire box. Since we store the player ID in the database anyways when someone puts down a coop, it should be pretty simple to check to see if the player id matches, or if the player is an Admin, if not then the action never triggers in the first place. Just want to be more safe than sorry. We like making our fellow players smile, so we're just doing our best to make sure players enjoy the plugins. :)
    Thanks again for the great feedback! :thumbsup:

    Works good. Good job :)

    Thanks so much! It's always great to get such good feedback from people! :thumbsup:





    Progress update?
    Still in the works to a great extent, but we made this yesterday:


    Now to get the skillet on the fire and then the egg in the skillet. We'll post another updated download when it's ready! :thumbup:

  • just a heads up. If you remove the coop, the chickens die. You can harvest them but they die.

    Yeah, that's to prevent players from spawning too many chickens. It was intentional.
    If that measure wasn't taken, a player could spawn a bunch of chickens, move the coop, spawn more, rinse and repeat. We don't want players to be able to overburden servers with loads of chickens, so we had to kill them all when a coop is removed.
    Thanks though!

  • Chicken Coops Plugin has been updated! New Version 0.7.1
    You can cook and eat those eggs now!
    Built-in Player protection for the coops has been added!

    See the updated post at the top for more details, and to get the latest version!




    understood :) was just reporting what was going on. was not complaining. I kind of like it that way and then there is your reason. I absolutely approve :)

    No worries Sharkbitefischer! :) I didn't think you were complaining. Actually, although I try to test the code thoroughly to make sure it's stable, there's no way I could possibly test it from every angle. That's why I depend on people like you to tell me about how the plugin is working out there. Plus, I always love hearing about people using my plugins and your feedback is always appreciated, so thank you! :thumbsup:

  • picking an egg up when it is not finished cooking throws an error. The rest of it works well. Maybe try adding a slimy egg goo to be picked up when not finished cooking.


    PLUGIN EXCEPTION (ChickenCoop, 0.7.1, Allie and Lexie) ---->
    java.util.ConcurrentModificationException
    at java.util.ArrayList$Itr.checkForComodification(Unknown Source)
    at java.util.ArrayList$Itr.next(Unknown Source)
    at mod.allielexie.chickencoop.ChickenCoop.onPlayerInteraction(ChickenCoop.java:549)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at pluginapi.PluginEventHandler.triggerEvent(SourceFile:245)
    at G.c.a(SourceFile:355)
    at G.c.messageReceived(SourceFile:79)
    at de.jiw.network.server.core.ServerTcpChannel.onMessageReceived(ServerTcpChannel.java:99)
    at de.jiw.network.server.core.AbstractServerChannel.dispatchTCP(AbstractServerChannel.java:62)
    at de.jiw.network.server.session.TcpSessionHandler.channelRead0(TcpSessionHandler.java:79)
    at de.jiw.network.server.session.TcpSessionHandler.channelRead0(TcpSessionHandler.java:15)
    at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
    at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:310)
    at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:284)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
    at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:310)
    at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:284)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
    at io.netty.channel.AbstractChannelHandlerContext.access$600(AbstractChannelHandlerContext.java:38)
    at io.netty.channel.AbstractChannelHandlerContext$7.run(AbstractChannelHandlerContext.java:353)
    at io.netty.util.concurrent.DefaultEventExecutor.run(DefaultEventExecutor.java:66)
    at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:858)
    at io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:138)
    at java.lang.Thread.run(Unknown Source)

  • Hmm, You're actually not supposed to be able to pick up the slimy uncooked egg at all. I thought I tested that. I'll see if I can replicate the problem and get it fixed. Also, thanks for sharing the stack trace, that helps a lot! :)

  • Update 0.7.2 -
    Fixed a bug when picking up a skillet while cooking an egg. Please update to the new version!
    See top post in this thread to get the new version!
    Thanks to @sharkbitefischer for pointing this out!



    point just off the egg in the pan so the arrow changes and press f and the egg disappears and it causes that error :) Real simple to make happen.

    I found what I did. It was a simple oversight on my part, pobody's nerfect :P . Update and try it now, it should be fixed.
    Picking up the skillet while an uncooked egg is in it will yield nothing as planned. Just an FYI, you don't have to pick up the skillet to remove the egg but you may, to get them both off the fire at the same time. You can also pick up the cooked egg directly without removing the skillet, like if you're planning on cooking a batch of them.


    Thanks for pointing this out and sharing, good catch! :thumbup:

  • Wir haben einen Block daraus gemacht, damit Sie Ihren eigenen Hühnerstall entwerfen können. Auf diese Weise können Sie Ihren eigenen Hühnerstall nach Ihren Wünschen bauen. Hühner legen Eier in den Block, stellen Sie also sicher, dass Sie trotzdem mit ihm interagieren können, nachdem Sie ihn in Ihren Hühnerstall gelegt haben.

  • good news this plugin works with ABM so you can tame and breed more chickens as you wish :)


    Question. Why did you put the chickencoop.db in the world db folder instead of the plugin folder?

    Cool! I haven't tried ABM yet, but I'm glad to hear they're compatible :)


    At first I chose the world db folder because I was following the example plugins, but then I realized there's another good reason to do so. Since the plugin works in singleplayer too, each singleplayer world has it's own chicken coops db, Whereas if it was one universal chicken coop db, every chicken coop from every singleplayer world the player has would get loaded no matter what world was chosen to load up, you'd find chicken coops in some interesting places I bet that way.
    Can you think of any potential problems of putting the db in the world folder? I haven't thought of any, but I'd like to know your ideas. ^^

  • hallo,
    Euer Plugin ist echt super geworden . :thumbsup::thumbsup::thumbsup::thumbsup:
    Leider ist es aber so das wenn ich die Pfanne von dem Grill nehme,
    und mich aus und wieder Einlogge die zuvor gesetzten Pfannen wieder auftauchen und sich nicht entfernen lassen. ?(
    Aber weiter so, sehr gute Arbeit. :thumbsup:

  • hallo,
    Euer Plugin ist echt super geworden . :thumbsup::thumbsup::thumbsup::thumbsup:
    Leider ist es aber so das wenn ich die Pfanne von dem Grill nehme,
    und mich aus und wieder Einlogge die zuvor gesetzten Pfannen wieder auftauchen und sich nicht entfernen lassen. ?(
    Aber weiter so, sehr gute Arbeit. :thumbsup:

    Danke, ich bin froh, dass dir das Plugin gefällt :D


    Hmmm Sie können keine Pfannen aufheben, die bei einem früheren Speichervorgang übrig waren. Ist das richtig? Ich werde sehen, ob ich das noch einmal testen kann und dich wissen lassen, was ich herausfinde. Danke, dass Sie mich informiert haben.

Participate now!

Don’t have an account yet? Create a new account now and be part of our community!