Skip to content

Commit bd01ff2

Browse files
committed
aggregated updates
1 parent c083f62 commit bd01ff2

39 files changed

Lines changed: 2231 additions & 1342 deletions

docs/attributions.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# Attributions
1+
# Attributions for CherryGrove
22

33
## Third-party libraries
44

docs/cg/design/simulation.mdx

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,4 +69,10 @@ After a lot of thinking, I came up with a design like this:
6969
5. Execute player input functions from `InputHandler`
7070
6. Render current state
7171

72-
Surprisingly it's not "read input, update state, render output" but "update state, read input, render output". This is because multiplayer fairness. If we read input at the beginning, players with low latency will be able to modify the world state one tick earlier than players with high latency. Yes we're actually caring for the future multiplayer era.
72+
Surprisingly it's not "read input, update state, render output" but "update state, read input, render output". This is because multiplayer fairness. If we read input at the beginning, players with low latency will be able to modify the world state one tick earlier than players with high latency. Yes we're actually caring for the future multiplayer era.
73+
74+
## Adoptive Ticking
75+
76+
The question for every video game is: which reference should we align the ticking system to? Some just use turn-based system where there is no concept like time in the game, some use real-time system where the game state is updated according to real-world time, and some use a fixed-tick system where the game state is updated at a fixed rate regardless of real-world time.
77+
78+
CherryGrove uses a fixed-tick system just like Minecraft. But the tick rate is not fixed. It's meant to solve the biggest problem of fixed-tick system: time resolution.

docs/cg/developing.mdx

Lines changed: 0 additions & 41 deletions
This file was deleted.

docs/cg/faq.mdx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,10 @@ The logo also shows a tendency to converge towards the center, which we personal
5656

5757
Some people might perceive the logo as a face, even a modified creeper face or a totem of undying. The logo has nothing to do with them.
5858

59+
:::note
60+
Do you know that every logo for products within CherryRidge also has exactly 13 pixels in them? That's a tradition starting from CherryGrove's logo.
61+
:::
62+
5963
## Licensing
6064

6165
### What license is applicable for me to do `x`?

docs/cg/references/format/index.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ Compressed CherryGrove content pack folder, similar to `.mcaddon` / `.mcpack`.
4848

4949
### [`.cgr`](format/cgr)
5050

51-
Compresse CherryGrove relocatable game save, similar to schematic or `.mcstructure` but with `manifest.json` that indexes potentially multiple structures stored using `.cgb` files.
51+
Compressed CherryGrove relocatable game save, similar to schematic or `.mcstructure` but with `manifest.json` that indexes potentially multiple structures stored using `.cgb` files.
5252

5353
### `.zip`
5454

docs/cg/releasing/building.mdx

Lines changed: 210 additions & 62 deletions
Large diffs are not rendered by default.

docs/cg/releasing/packing.mdx

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,22 +4,22 @@ sidebar_position: 2
44

55
# Packing CherryGrove
66

7-
This tutorial will help you pack the installer of CherryGrove for each platform. All packing related resources are located under the `packing` directory.
7+
This tutorial will help you pack the files and generate the installer / package for each platform. All packing related resources are located under the `packing` directory.
88

99
:::warning
10-
Remember to abide by the [terms](../../legal) when you want to distribute your builds.
10+
Remember to abide by the [Terms of Use](../../legal#terms-of-use) when you want to distribute your builds.
1111
:::
1212

1313
## Microsoft Windows
1414

15-
CherryGrove currently uses NSIS (Nullsoft Scriptable Install System) to pack for installer on Microsoft Windows. Download and install it at: https://nsis.sourceforge.io/Download.
15+
CherryGrove currently uses Inno Setup to pack for installer on Microsoft Windows. Download and install it at https://jrsoftware.org/isdl.php.
1616

17-
NSIS uses `.nsi` script files to build the installer, which can be found at `packing/windows`. If you want to do a standard packing procedure, follow these steps:
17+
Inno Setup uses `.iss` script files to build the installer, which can be found at `packing/windows`. If you want to do a standard packing procedure, follow these steps:
1818

19-
1. Build the **release** version of CherryGrove.
20-
2. Run `packing/windows/pack.bat` and wait for all language varieties to be built.
19+
1. Build the **release** version of CherryGrove, and check if it works properly and locates **exactly** at `out/windows-x64-release` directory.
20+
2. Run `packing/windows/pack.bat`. You should see an installer file `CherryGrove_setup_win64.exe` generated inside the same directory.
2121

22-
Adjust the code in the scripts to create your custom procedures.
22+
Adjust the code in the script to create your custom procedure.
2323

2424
## Linux
2525

docs/legal.mdx

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
# Legal
22

3+
**To see the terms, please refer to [Terms of Use](#terms-of-use). The [Introduction](#introduction) section does not form part of the terms.**
4+
35
## Introduction
46

57
The founder of CherryGrove, [LJM12914](https://github.com/ljm12914#:~:text=It%27s%20a%20shame%20of%20open%20source%20to%20allow%20unrewarded%20commercial%20use.), don't like the situation and the definition of open source projects being used for commercial purposes without any compensation to the original developers:
@@ -8,12 +10,18 @@ The founder of CherryGrove, [LJM12914](https://github.com/ljm12914#:~:text=It%27
810
>
911
> LJM12914
1012
11-
#### So CherryGrove is a source available project. CherryGrove is NOT an open source project, and LJM12914 thinks this is NOT the fault of CherryGrove but the fault of open source definition's high expectations of human society.
13+
#### So CherryGrove is a source available project. CherryGrove is NOT an open source project, and LJM12914 thinks this is NOT the fault of CherryGrove but the fault of open source definition's unrealistic expectations of humans and human society.
1214

1315
CherryGrove is dual-licensed under [PolyForm Noncommercial License 1.0.0](https://polyformproject.org/licenses/noncommercial/1.0.0) and a commercial license. The PolyForm Noncommercial License 1.0.0 is a source-available license that allows you to use CherryGrove for non-commercial purposes, but requires you to purchase the commercial license for commercial use. The commercial license allows you to use CherryGrove for commercial purposes, including selling your own content packs and modified versions of CherryGrove.
1416

1517
For more information about the explanation of the license, please refer to [FAQ](cg/faq#licensing).
1618

19+
NOT AN OFFICIAL MINECRAFT PRODUCT. NOT APPROVED (and probably won't be approved) BY OR ASSOCIATED WITH MOJANG OR MICROSOFT. :)
20+
21+
Minecraft® is a trademark of Microsoft Corporation.
22+
23+
Every use of any trademark in this documentation is for identification purposes only and does not imply any affiliation with or endorsement by the trademark holder.
24+
1725
## Terms of Use
1826

1927
CherryGrove copyright (c) 2025 CherryGrove Contributors.
@@ -84,21 +92,21 @@ You must not use the CherryGrove name, logo, or any other trademarked material i
8492

8593
Notwithstanding the project's PolyForm Noncommercial License 1.0.0, the licensor grants you an irrevocable, worldwide, non-exclusive, and royalty-free permission to record, capture, store, copy, modify, transmit, distribute, and publish screenshots, videos, logs, journals, live streams, and world data produced by CherryGrove and to monetize them through any means, provided that the content is not used to create a commercial product or service that competes with any products or services offered by the licensor.
8694

87-
This exception does not grant you any rights to use the CherryGrove name, logo, or any other trademarked material in a way that suggests an endorsement or affiliation of you with CherryGrove without prior written permission from the licensor.
95+
This exception DOES NOT grant you any rights to use the CherryGrove name, logo, or any other trademarked material in a way that suggests an endorsement or affiliation of you with CherryGrove without prior written permission from the licensor.
8896

89-
This exception does not grant you any rights to use any data, code, or other materials that are part of, or produced by a content pack. Content packs are subject to their own licenses. You need to follow the corresponding license if you want to use, copy, modify, distribute, or publish any data, code, or other materials that are part of, or produced by a content pack.
97+
This exception DOES NOT grant you any rights to use, copy, modify, record, distribute, or publish any data, code, or other materials that are part of, or produced by a content pack. Content packs are subject to their own licenses. You need to follow the corresponding license if you want to use, copy, modify, record, distribute, or publish any data, code, or other materials that are part of, or produced by a content pack.
9098

9199
### User-Generated Content, Liability and Takedown
92100

93101
By transmitting, distributing, or publishing any content pack, or other user-generated content through CherryGrove or related services, you represent and warrant that:
94102

95103
- You have all rights needed to use, publish, and distribute the content;
96-
- The content does not infringe IP, privacy, or publicity rights; does not contain malware; and complies with our Acceptable Use rules;
104+
- The content does not infringe intellectual property, privacy, or publicity rights; does not contain malware; and complies with our Acceptable Use rules;
97105
- You will comply with all applicable laws and marketplace rules where you take actions related to the content.
98106

99107
You fully understand that you are solely responsible for any content you transmit, distribute, or publish for CherryGrove. CherryGrove contributors are not the publisher of any user-generated content and have no obligation nor ability to review or monitor any user-generated content.
100108

101-
TO THE FULLEST EXTENT PERMITTED BY LAW, CherryGrove contributors AND ITS AFFILIATES **WILL NOT BE LIABLE** FOR ANY INDIRECT, INCIDENTAL, SPECIAL, CONSEQUENTIAL, PUNITIVE, OR EXEMPLARY DAMAGES; OR FOR LOSS OF PROFITS, REVENUE, DATA, GOODWILL, OR BUSINESS INTERRUPTION, **ARISING FROM OR RELATED TO USER-GENERATED CONTENT FOR CherryGrove**, EVEN IF ADVISED OF THE POSSIBILITY.
109+
To the fullest extent permitted by law, CherryGrove contributors and its affiliates **WILL NOT BE LIABLE** FOR ANY INDIRECT, INCIDENTAL, SPECIAL, CONSEQUENTIAL, PUNITIVE, OR EXEMPLARY DAMAGES; OR FOR LOSS OF PROFITS, REVENUE, DATA, GOODWILL, OR BUSINESS INTERRUPTION, **ARISING FROM OR RELATED TO USER-GENERATED CONTENT FOR CherryGrove**, EVEN IF ADVISED OF THE POSSIBILITY.
102110

103111
We may preserve and share information with authorities if we believe it is necessary to comply with the law, protect our rights or property, or prevent harm to others.
104112

docs/pack/events.mdx

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
# Events
2+
3+
Contrary to direct-call functions, events are "events" that:
4+
5+
1. Happens sporadically and may not happen at all. You cannot predict when or whether they will happen.
6+
2. Are globally recognized.
7+
8+
These two properties make events very different, especially the second. We need to

docs/pack/getting-started.mdx

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,28 @@
11
# Getting Started
22

3+
## Execution Flow
4+
5+
CherryGrove uses two paradigms in pack system: direct-call, and event-driven. Direct-call is for things that will happen deterministically, like loading pack, generating terrain and periodic events. Event-driven is for things that may happen but are not guaranteed, like player actions, block events, and network events.
6+
7+
Every pack will has the following lifecycle:
8+
9+
1. When a world is opened, CherryGrove will read `world.cgb` to get the list of packs used in the world, then build a dependency graph. Then, each pack's `onFirstLoad()` function will be called once.
10+
- Pack should finish initialization in this function. This is expected to be a big operation.
11+
- Not all packs in the world will be firstloaded in this phase. CherryGrove will try to load as few packs as possible that can satisfy player's vicinity. Please set `config.alwaysLoad` to `true` if you want a pack to always be loaded.
12+
2. When a player joins the world, each loaded pack's `onPlayerJoin(player)` function will be called once for that player.
13+
3. When a player finished join operation, each loaded pack's `onPlayerReady(player)` function will be called once for that player.
14+
4. When a player leaves the world, each loaded pack's `onPlayerLeave(player)` function will be called once for that player.
15+
16+
```mermaid
17+
graph LR
18+
A[Join World Operation]-->B[Read \`world.cgb\`]
19+
B-->C[Get Pack List]
20+
C-->D[Search for Pack Position]
21+
```
22+
```mermaid
23+
graph LR
24+
-->E[Load Pack Manifest]
25+
E-->F[Check Dependencies & Incompatibilities]
26+
F-->G[Build Dependency Graph]
27+
G-->H[Load Packs]
28+
```

0 commit comments

Comments
 (0)