Tasks that are Easy Enough for newcoming programmers
#1
From time to time I am wondering, if there's someone who'd like to join the project, what task should we suggest to them as worth doing. Such a task needs to be easy enough to accomplish, yet should provide at least some level of satisfaction when done. I'd like this thread to maintain a list of such tasks.

List of tasks:
- better small foliage finisher - make the small foliage biome-dependent, use a better distribution (perhaps: pick a coordpair, then spawn a few of the same plants around that place). Implement as a new cFinisherGen descendant, don't modify the cSprinkleSmallFoliage!
- add jungle trees - add the code that generates jungle tree images. Trees.cpp is your friend, the skeleton is already there.
- add large apple trees - add the code that generates large (branching) apple tree images. The skeleton code is already in Trees.cpp
- vines in caves - in jungle biomes, vines could be added to caves (they look awesome). Probably a new finisher. Make the biomes settable, so that not only jungle can have this feature. Some depth limit would be good as well (depth-dependent probability function?)
- make the ore nest generator settable - make the OreNests structure generator configurable via world.ini parameters (amount of nests, size of nests per each resource type)
- split OreNest generator - OreNest structure generator now generates all ores. Split it into separate ore generators: "IronOreNests", "GoldOreNest" etc. that all employ the same generator, only parametrized by the material, size and count of the nests. Make the sizes and counts settable per-material. Make the old OreNest generator a synonym for the new generators. Add dirt and gravel to allowed materials.
- or make OreNest generator configurable - by setting the allowed materials in a similar way as biomes are listed for Voronoi biomegen. Still, material sizes should be settable, too, a syntax for that config will have to be made up
- AnvilStats module for orenests - A new module for AnvilStats that will calculate the statistics needed for OreNests - maximum ore height (or even better, height distribution), number of ore nests per chunk and ore nest size distribution (max size, avg size...)
- Block rotating and mirroring - In order for cBlockArea:MirrorXY() and :RotateCW() and similar functions to work, we need the cBlockHandlers to provide the correct rotation and mirroring data. Specifically, the functions MetaRotateCCW(), MetaRotateCW(), MetaMirrorXY(), MetaMirrorXZ() and MetaMirrorYZ() need to be implemented for each block that is affected by rotation. Stairs, Torch and Vine already have an example implementation.
- Vine growth - make vines grow slowly when the block is updated.
- Remember "player-is-flying" - make the server remember that the player is flying, and restore that when the player re-joins the server. You'll probably need to work with the PlayerAbilities packet ( http://wiki.vg/Protocol#0xCA )
- Pumpkin face metadata - implement pumpkins and jack-o-lanterns getting the correct direction metadata when placed. https://github.com/mc-server/MCServer/issues/99
- Ender chest - a slightly more challenging task, implement the block entity (based on the cChestEntity), the UI (cWindow descendant, like cChestWindow) and the storage (in the cPlayer object, as a cItemGrid member variable)
- Issue tracker tasks - there are tasks marked Easy in the GitHub issue tracker: https://github.com/mc-server/MCServer/is...state=open

For the generator-related tasks, it might be useful to read through the forum thread which I wrote while I was writing the generator, so that you make yourself familiar with the overall design and individual algorithms involved: https://forum.cuberite.org/showthread.php?tid=409
Reply
Thanks given by:
#2
Maybe another category: "tasks that are too easy to do but too boring for me to do" Wink
- Block properties - We need an update on blocks' properties. Specifically, g_BlockIsSnowable[] in BlockID.cpp is missing a few blocks, therefore vines are generated snowed-over. All the BlockID.cpp's boolean block property arrays need checking and also syncing to newest block IDs.
- Item stacking - The max amount of items per single stack needs to be implemented. Currently it has been done for only a few items. cItemHandler::GetMaxStackSize() function
Reply
Thanks given by:
#3
I'm keeping jungle trees in the list because they still need better treetops and they could really use branches.
Reply
Thanks given by:
#4
Added vines in caves.
Reply
Thanks given by:
#5
could you update the list? I forgot you had this topic in the forum
Reply
Thanks given by:
#6
The list in the first post is up to date. I edit it from time to time to keep things in sync. I posted a new post just to bump the thread Smile

There's only one thing - currently the vine decay is not an advisable task, the underlying structures (BlockHandlers / Chunk / Tick) are changing rapidly and another change is expected soon.
Reply
Thanks given by:
#7
Hi!
I know it wasn't on the list but it was an easy task so I'm posting it in that threadTongue
I made a simple code which allows eggs to spawn mobs. Smile
https://dl.dropbox.com/u/21041937/spawn_eggs.patch

MC-Server can't recognize metadata at the moment (or is it just me?) so all eggs can only spawn zombies.
[Image: metamcs.png]
Reply
Thanks given by:
#8
Patch committed as rev 973.
Reply
Thanks given by:
#9
(10-13-2012, 10:03 PM)Luksor Wrote: MC-Server can't recognize metadata at the moment

That was a stupid mistake. Fixed in rev 976. The 1.3.2 protocol simply ignored the incoming metadata, always using 0.

Now you can make your spawn eggs work for each monster class Smile
Reply
Thanks given by:
#10
https://dl.dropbox.com/u/21041937/ItemSpawnEgg.patch Wink

EDIT: File removed - please look at post #17.
Reply
Thanks given by:




Users browsing this thread: 13 Guest(s)