* Fix filename template for saved maps
Signed-off-by: Mike Jagdis <mjagdis@eris-associates.co.uk>
* First patch - added to CONTRIBUTORS
Signed-off-by: Mike Jagdis <mjagdis@eris-associates.co.uk>
---------
Signed-off-by: Mike Jagdis <mjagdis@eris-associates.co.uk>
* Add DarkoGNU to CONTRIBUTORS
* HandleFarmlandTrampling function & its docs
* Fix decimal separators (, -> .)
* Fix style. Adjust thresholds. Make function non-virtual
* Adjust thresholds again. Prepare for fixing #5402
* Trying to fix falling through farmlands
* Another style fix
* Add FarmlandTramplingEnabled to world.ini
* Docs for IsFarmlandTramplingEnabled
* Style
* Farmland trampling - handling the random chance
* Trampling kinda works, very buggy
* Trying to fix clang-tidy
* Fix trampling
* Trying to fix the 'undocumented API symbol'
* Implement bearbin's suggestions
* Calculate volume properly
* Don't use std::pow for squaring
* Improved comments
* Really, should comments' style be checked?
* Fixing bugs regarding wolfs and ocelots
* Death messages appear after killing tamed ocelots and wolfs
* Style fix
* Added myself to the CONTRIBUTORS file
* Removed redundant string initialization
* Removed an unsafe cast.
* Changed the order of initialization of fields in constuctor of class cOcelot
* Added case statement in easyinstall.sh.
Added case statement in easyinstall.sh to allow install on Raspberry Pi 4 Ubuntu x64 (AArch64).
* Added mcfadyeni to CONTRIBUTORS
* Added functionality: mobs now enter boats and minecarts when coming into collision with them.
* Fixed basic style errors, nothing else
* Added self to contributors and reverted .gitignore to original state.
* Change to Cuboid calculation for splash distance
* Use ForEachEntityInBox when splash entities
* Remove TODO comment, calculation verified
* Added self to contributors
* Introduce recipe book functionality
The recipe book helps especially new players. Missing it gives the
impression that cuberite is not as advanced as it is.
The handling of the recipe book uses the following functions:
- Unlock Recipes
(https://wiki.vg/index.php?title=Protocol&oldid=14204#Unlock_Recipes) to
make recipes available and show the notification for new recipes.
Initialization is done on player login for known ones, the update is done
when new items are discovered.
- Craft Recipe Request
(https://wiki.vg/index.php?title=Protocol&oldid=14204#Craft_Recipe_Request)
when the user selects a recipe from the recipe book to fill the slots.
Known recipes are initialized on player login via `Unlock Recipes` with
`Action` 0.
As soon as a new recipe is discovered this is added via `Unlock Recipes`
with `Action` 1.
To be able to know and recognize new recipes the player class is
extended with `KnownItems` and `KnownRecipes`. As soon as a player
touches an item this is compared to the list of `KnownItems`, if the
item is unknown the recipes are checked for this item and the other
ingredients are checked with the list of `KnownItems`. If a full match
is discovered the recipe is unlocked with the client and stored in the
`KnownRecipes`.
To unlock recipes the recipe ID is sent to the client. A mapping file
(for protocol 1.12.2) translated the minecraft recipe names to ids. The
crafting.txt is extended with and minecraft recipe names is possible.
Limitations:
Only a single recipe is added to the crafting area. Multiple clicks or
shift click does not increase the number of builds.
Co-authored-by: peterbell10 <peterbell10@live.co.uk>
* Address first issues mentioned by @peterbell10
- Some linting
- Extract loading of recipe specific protocol mapping into a function
- Build `RecipeNameMap` only once
- Use `std::optional`
- Extract `LoadRecipe` from `Window`
* Start to implement new suggestions
* Update with suggestions from @peterbell10
* Some minor cleanup
* Update protocol packet IDs
* Remove unused include
* Include header in cmake
* Change a vector to integer counter
* Change dromedaryCase method names to PascalCase
* Address suggestions from @madmaxoft
* Read Protocol subdirectories to load recipe books
To load all recipebooks iterate over the `Protocol` subdirectories
to find mapping files.
Co-authored-by: peterbell10 <peterbell10@live.co.uk>
Co-authored-by: Franklin T Kong <ftk@umich.edu>
Co-authored-by: aiugai <aiugai@umich.edu>
Fixes#4641
Overrode GetPlacementBlockTypeMeta for CactusBlock, which gets called before a player places the cactus block, so it returns true if the placement is allowed or false if not, in which case the cactus does not drop as a block but stays in the player's hand which is the expected behavior. Tested in Minecraft client 1.12.2.
When generating foliage, create cacti with height in the interval [1; MaxCactusHeight] and sugarcane with height in [1; MaxSugarcaneHeight] (with MaxCactusHeight and MaxSugarcaneHeight declared in world.ini)
Fixes#4135
* Add hand parameter to distinguish main hand/off hand.
* Add a new function cClientHandle::HandleUseItem to separate the functionality of using an item without a target block. This matches the protocol with client version >= 1.9
* Always actively update the status of a block if the placement fails (by out of reach or rejected by plugin).
* Do not call plugin callback CallHookPlayerRightClick(-1, 255, -1, -1, 0, 0, 0) when using item.
The CallHookPlayerUsingItem will still be called.
Now at most one of CallHookPlayerRightClick, CallHookPlayerUsingBlock,
CallHookPlayerUsingItem and CallHookPlayerEating will be called based on
the type of action (not including the used version of callbacks).
* Do not count using item as BlockInteractionsRate check (Using item takes time).
* Now we can open chests(etc.) when sneaking as long as the player's hand is empty.
This is what vanilla server does.
Adds a block handler for concrete powder and implements hardening to concrete.
Concrete powder turns into concrete when:
* It is next to water when it receives a block update
* It falls onto a water block (even with Physics SandInstantFall=1)