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
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