1
0
Commit Graph

10875 Commits

Author SHA1 Message Date
Tobias Wilken
36eab1b323
Introduce recipe book functionality (#4493)
* 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>
2020-07-14 17:56:42 +01:00
Tiger Wang
6e3f6d58a4 Custom command depend is automatic 2020-07-13 13:02:21 +01:00
Tiger Wang
c94f3c7ae0 Jenkins crosscompile 2020-07-13 12:35:38 +01:00
Tiger Wang
1c714312eb Remove unnecessary includes 2020-07-12 23:41:54 +01:00
Tiger Wang
3cf671b4fc Jenkins fixes 2020-07-12 23:38:13 +01:00
Tiger Wang
bd20afd6ce Reduce buildlogspam
- Turn off unused parameter warning
2020-07-12 23:38:08 +01:00
Tiger Wang
4f85931c42 Address comments 2020-07-12 22:00:07 +01:00
Tiger Wang
2c0fc395ba Funktions 2020-07-12 22:00:07 +01:00
Tiger Wang
6317176d7e More CMake cleanup 2020-07-12 22:00:07 +01:00
KrystilizeNevaDies
d0f38f52cb Remove Schematic Chunk height limitation 2020-07-06 20:56:47 +01:00
Tiger Wang
3f33b0736e Comment capitalisation 2020-07-06 20:56:05 +01:00
Tiger Wang
a24dd3a2ab Use enum to represent light states 2020-07-06 20:56:05 +01:00
Tiger Wang
f49f90906c Reduced packet spam when entities idle
* Try not to send look packets when nothing's changed.
2020-07-06 20:56:05 +01:00
Tiger Wang
e205d4109b Made grass spreader prettier 2020-07-06 20:56:05 +01:00
Peter Bell
58ab289b56 Update mbedtls to 2.23.0 2020-07-06 20:53:04 +01:00
Peter Bell
ad935ef40f Update libevent to 2.1.12-stable 2020-07-06 20:53:04 +01:00
Peter Bell
829f8d46f0 Update fmtlib to 7.0.0 2020-07-06 20:53:04 +01:00
MaxwellScroggs
5cdaf073be
cWindow: Convert XYZ to Vector3 (#4764) 2020-07-04 23:49:17 +02:00
Franklin Kong
868e28b44f
Merged trivial item handlers into cSimplePlaceableItemHandler (#4766)
- Remove unused files

Co-authored-by: aiugai <aiugai@umich.edu>
Co-authored-by: Tiger Wang <ziwei.tiger@outlook.com>
2020-06-26 21:34:22 +01:00
morsmordere
60c10ef248
Cactus cannot be placed on a forbidden blocks (#4767)
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.
2020-06-26 01:23:47 +01:00
Mat
e0a361de2a
Send entities in cChunkSender (#4532)
Confer issue #3696
2020-06-24 12:48:50 +01:00
peterbell10
6036971c77
libevent: Enable IOCP backend on windows (#4745) 2020-06-08 21:03:29 +01:00
peterbell10
99d96337da
Fire sim: Handle fuel block being destroyed (#4751) 2020-05-31 20:27:08 +01:00
Tiger Wang
8b0b800008
Configurable LTO (#4755) 2020-05-31 20:26:50 +01:00
Tiger Wang
78f72bbfc4 Resolve IPO flags mismatch 2020-05-31 13:05:19 +01:00
Peter Bell
ce1d6a7ebd Protocol: Avoid crashing on invalid sign text 2020-05-29 13:46:11 +01:00
Tiger Wang
9e8598fb1c
Upgrade to C++17 [CMake] (#4717)
* Make our CMake slightly less insane
2020-05-16 20:59:10 +01:00
peterbell10
21ef9e3819
Travis: Fix ccache on debug builds (#4741) 2020-05-16 12:57:14 +01:00
Peter Bell
104961b889 sizeof(char) 2020-05-16 09:39:05 +01:00
Peter Bell
c1e9d9d0e0 Use thread safe localtime_r on linux 2020-05-16 09:39:05 +01:00
Peter Bell
89c9a7f563 Enable debug logging in test builds 2020-05-16 09:39:05 +01:00
Peter Bell
6dee68cb63 Avoid a copy when logging lua strings 2020-05-16 09:39:05 +01:00
Peter Bell
3189a3cbee Update logging code to reduce unnecessary string copying:
* Write into a single fmt::memory_buffer
* Use string_view instead of AString for listener callbacks
* Also collapsed vFLOG and vLOG functions into one per formatting type
2020-05-16 09:39:05 +01:00
peterbell10
13144a08e4
Enable some more clang-tidy linter checks (#4738)
* Avoid inefficient AString -> c_str() -> AString round trip

* Avoid redundant string init expressions

* Avoid unnecessary return, continue, etc.

* Add .clang-format to help with clang-tidy fix-its

* Avoid unnecessary passing by value

* Avoid unnecessary local copying

* Avoid copying in range-for loops

* Avoid over-complicated boolean expressions

* Some violations missed by my local clang-tidy

* Allow unnecessary continue statements

* Add brackets

* Another expression missed locally

* Move BindingsProcessor call into clang-tidy.sh and add space

* Fix pushd not found error

* Different grouping of CheckBlockInteractionRate
2020-05-14 22:15:35 +00:00
Peter Bell
edb548f9d6 Generate "LuaState_Typedefs.inc" before running clang-tidy 2020-05-13 21:49:38 +01:00
Mat
e053f72db8
Android build cleanup (#4734)
* Android build cleanup

* Remove unnecessary workaround

* Remove more unnecessities

* Bump cmake version
2020-05-10 16:18:28 +00:00
peterbell10
84289a2ba9
Cleanup some workarounds and warnings (#4735)
* Cleanup thread_local usage in FastRandom

* Use constexpr to avoid clang warning

* Fix more Wglobal-constructor warnings

* Make MSVC happy?
2020-05-10 16:16:49 +00:00
peterbell10
154df6b09d
Cleanup unneeded globals (#4736) 2020-05-10 16:16:38 +00:00
Mat
53d1c9036b
Remove pkFishingFloat documentation (#4732) 2020-05-10 13:44:10 +03:00
Peter Bell
1123c95cf2 Enable C++17 in build 2020-05-09 20:37:16 +01:00
peterbell10
e6634ed26c
Update submodules (#4727)
Closes #4708

This updates jsoncpp, mbedtls, TCLAP and SQLiteCpp to their latest stable release. A few additional changes were needed:

* jsoncpp deprecated Reader, FastWriter and StyledWriter which I've replaced
  with some helper functions in JsonUtils.cpp

* SQLiteCpp changed how it builds with external sqlite libraries, now expecting
  them to be installed. The simplest path was to remove sqlite from cuberite's
  submodule and just use SQLiteCpp's internal version.
2020-05-09 15:51:15 +01:00
Tiger Wang
804c3ba6e9
Upgrade to C++17 [CI] (#4716)
* Update CI

* Reduce one build to minimum cmake version

* Update compile instructions with new minimum versions

* Update more guides

* Run debug build with VS 2017

Co-authored-by: Peter Bell <peterbell10@live.co.uk>
2020-05-09 13:56:39 +00:00
peterbell10
bd54cb71e5
Fix clang-tidy errors (#4730) 2020-05-09 01:38:17 +00:00
Peter Bell
a5be5310af Fix clang tidy on circle-ci 2020-05-08 22:57:51 +01:00
Mat
388c96bbe2
Don't include folder itself in AutoAPI.zip 2020-05-08 20:48:53 +03:00
Alexander Harkness
9c51c54e91
Update Core 2020-05-08 11:52:25 +01:00
Tiger Wang
a9e06d33c5 Add some comments about terracing 2020-05-08 10:52:35 +01:00
Tiger Wang
6ac11925f1 Update RedstoneWireHandler style 2020-05-08 10:52:35 +01:00
mBornand
1565d9b3ce
Use Vector3 for cLineBlockTracer and cBlockTracer (#4715)
* cLineBlockTracer uses Vector
2020-05-08 10:04:07 +01:00
peterbell10
c4ca11b372
Fix SetBlockMeta call in observer handler (#4728) 2020-05-08 09:46:03 +01:00