Compare commits
16 Commits
80ba6dad89
...
feature/js
| Author | SHA1 | Date | |
|---|---|---|---|
| a1f4a7cfe0 | |||
| bbba25e365 | |||
| 4268dc6047 | |||
| cc95fb0f9d | |||
| 10d2e4a813 | |||
| 782c7c6092 | |||
| bc4bbe1ff2 | |||
|
|
1baa2d6672 | ||
|
|
236e7c0433 | ||
|
|
def311c7dd | ||
|
|
45d2c8234a | ||
|
|
0f731530da | ||
|
|
2b75c510af | ||
|
|
d6e1e4a50e | ||
|
|
d62b310a21 | ||
|
|
cc2df5e4ec |
13
.github/workflows/release-build.yml
vendored
@@ -27,7 +27,8 @@ jobs:
|
|||||||
|
|
||||||
|
|
||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
|
env:
|
||||||
|
VCPKG_BINARY_SOURCES: clear;files,${{ github.workspace }}/.vcpkg-cache,readwrite
|
||||||
steps:
|
steps:
|
||||||
|
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
@@ -48,12 +49,18 @@ jobs:
|
|||||||
- name: Setup MSVC
|
- name: Setup MSVC
|
||||||
if: matrix.platform == 'windows'
|
if: matrix.platform == 'windows'
|
||||||
uses: ilammy/msvc-dev-cmd@v1
|
uses: ilammy/msvc-dev-cmd@v1
|
||||||
|
- name: Cache vcpkg
|
||||||
|
uses: actions/cache@v4
|
||||||
|
with:
|
||||||
|
path: .vcpkg-cache
|
||||||
|
key: ${{ runner.os }}-vcpkg-${{ hashFiles('vcpkg.json') }}
|
||||||
|
restore-keys: |
|
||||||
|
${{ runner.os }}-vcpkg-
|
||||||
- name: Bootstrap vcpkg
|
- name: Bootstrap vcpkg
|
||||||
run: |
|
run: |
|
||||||
git clone https://github.com/microsoft/vcpkg.git
|
git clone https://github.com/microsoft/vcpkg.git
|
||||||
./vcpkg/bootstrap-vcpkg.bat
|
./vcpkg/bootstrap-vcpkg.bat
|
||||||
|
|
||||||
- name: Configure
|
- name: Configure
|
||||||
if: matrix.platform == 'windows'
|
if: matrix.platform == 'windows'
|
||||||
run: >
|
run: >
|
||||||
|
|||||||
1
.gitignore
vendored
@@ -14,6 +14,7 @@
|
|||||||
*.pch
|
*.pch
|
||||||
*.sbr
|
*.sbr
|
||||||
build/
|
build/
|
||||||
|
build_debug/
|
||||||
Build/
|
Build/
|
||||||
bin/
|
bin/
|
||||||
Debug/
|
Debug/
|
||||||
|
|||||||
251
AGENTS.md
Normal file
@@ -0,0 +1,251 @@
|
|||||||
|
# Code Modification Guidelines
|
||||||
|
|
||||||
|
## 1. Git Branch Protection
|
||||||
|
|
||||||
|
- Never modify code directly on the `main` branch.
|
||||||
|
- Before editing, check the current branch:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git branch --show-current
|
||||||
|
````
|
||||||
|
|
||||||
|
* If the result is `main`, create or switch to a development branch first:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git checkout -b feature/xxx
|
||||||
|
```
|
||||||
|
|
||||||
|
* Do not bypass branch protection by:
|
||||||
|
|
||||||
|
* Committing directly to `main`.
|
||||||
|
* Running code generation, formatting, or large refactors on `main`.
|
||||||
|
* Rewriting or damaging `main` history.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 2. Code Comments
|
||||||
|
|
||||||
|
* All new comments must be written in English.
|
||||||
|
* Comments must be:
|
||||||
|
|
||||||
|
* Short and clear.
|
||||||
|
* Explain the purpose, not repeat the code.
|
||||||
|
* Avoid unnecessary details.
|
||||||
|
|
||||||
|
Recommended:
|
||||||
|
|
||||||
|
```cpp
|
||||||
|
// AI-generated: Prevent stale handle access.
|
||||||
|
```
|
||||||
|
|
||||||
|
Avoid:
|
||||||
|
|
||||||
|
```cpp
|
||||||
|
// AI-generated: This checks if the handle is invalid because...
|
||||||
|
```
|
||||||
|
|
||||||
|
* Important AI-added or modified logic should include:
|
||||||
|
|
||||||
|
```cpp
|
||||||
|
// AI-generated
|
||||||
|
```
|
||||||
|
|
||||||
|
* Do not add comments for trivial changes such as:
|
||||||
|
|
||||||
|
* One or two line logic fixes.
|
||||||
|
* Spelling corrections.
|
||||||
|
* Simple variable renames.
|
||||||
|
|
||||||
|
### 2.1 Do not write excessive or granular comments
|
||||||
|
|
||||||
|
AI must avoid sprinkling small explanatory comments throughout code.
|
||||||
|
Specifically:
|
||||||
|
|
||||||
|
* **No line-by-line narration.** Do not add a comment above (or beside)
|
||||||
|
every field, signal, slot, branch, or block just to restate what it is.
|
||||||
|
If the name is self-explanatory, no comment is needed.
|
||||||
|
* **No multi-part explanations on a single marker.** A line like
|
||||||
|
`// AI-generated: abort the in-flight download; finished handler clears state.`
|
||||||
|
is too much. Either drop it, or shorten to a single short clause
|
||||||
|
(e.g. `// AI-generated: abort in-flight download.`).
|
||||||
|
* **Prefer zero or one comment per file/section**, not many. A short
|
||||||
|
header comment explaining the file's purpose is acceptable; dozens of
|
||||||
|
inline labels are not.
|
||||||
|
* **Do not comment obvious QML/C++ bindings, layout splits, or default
|
||||||
|
values** (e.g. `// AI-generated: index 0 -> zh_CN, index 1 -> en.`).
|
||||||
|
The code already says that.
|
||||||
|
* **When in doubt, omit the comment.** A missing comment is fine; a
|
||||||
|
redundant one is noise that future maintainers must clean up.
|
||||||
|
|
||||||
|
Rule of thumb: if removing the comment would not lose useful
|
||||||
|
information, remove it.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 3. Project Style
|
||||||
|
|
||||||
|
Follow the existing project style strictly:
|
||||||
|
|
||||||
|
* Naming conventions.
|
||||||
|
* File organization.
|
||||||
|
* Formatting rules.
|
||||||
|
* Include order.
|
||||||
|
* Existing architecture.
|
||||||
|
|
||||||
|
Do not:
|
||||||
|
|
||||||
|
* Introduce unrelated coding styles.
|
||||||
|
* Add unnecessary design patterns.
|
||||||
|
* Create duplicate systems.
|
||||||
|
* Add abstractions without need.
|
||||||
|
* Change module responsibilities.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 4. Modification Scope
|
||||||
|
|
||||||
|
Only modify the minimum code required.
|
||||||
|
|
||||||
|
Do not:
|
||||||
|
|
||||||
|
* Format unrelated files.
|
||||||
|
* Remove existing comments.
|
||||||
|
* Rename large numbers of symbols.
|
||||||
|
* Change public APIs.
|
||||||
|
* Perform large refactors without confirmation.
|
||||||
|
|
||||||
|
If large changes are required, explain first:
|
||||||
|
|
||||||
|
1. Current problem.
|
||||||
|
2. Required changes.
|
||||||
|
3. Affected modules.
|
||||||
|
4. Expected impact.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 5. Build and Test
|
||||||
|
|
||||||
|
After modifications:
|
||||||
|
|
||||||
|
* Verify compilation.
|
||||||
|
* Check for new warnings.
|
||||||
|
* Ensure existing features still work.
|
||||||
|
|
||||||
|
Do not:
|
||||||
|
|
||||||
|
* Commit without verification.
|
||||||
|
* Ignore compiler errors.
|
||||||
|
* Hide problems with temporary hacks.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 6. Compatibility
|
||||||
|
|
||||||
|
Consider:
|
||||||
|
|
||||||
|
* Existing callers.
|
||||||
|
* API/ABI compatibility.
|
||||||
|
* Serialization formats.
|
||||||
|
* Network protocols.
|
||||||
|
* Save data.
|
||||||
|
* Threading impact.
|
||||||
|
|
||||||
|
Do not:
|
||||||
|
|
||||||
|
* Change network structures without compatibility handling.
|
||||||
|
* Break old data formats.
|
||||||
|
* Change public data layouts carelessly.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 7. Multi-threading Safety
|
||||||
|
|
||||||
|
For multi-threaded code, check:
|
||||||
|
|
||||||
|
* Data races.
|
||||||
|
* Object lifetime.
|
||||||
|
* Lock contention.
|
||||||
|
* Atomic correctness.
|
||||||
|
* Cross-thread resource access.
|
||||||
|
|
||||||
|
Do not:
|
||||||
|
|
||||||
|
* Assume single-threaded execution.
|
||||||
|
* Modify shared data without protection.
|
||||||
|
* Add hidden locks that hurt performance.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 8. Memory Safety
|
||||||
|
|
||||||
|
Consider:
|
||||||
|
|
||||||
|
* Ownership.
|
||||||
|
* Lifetime.
|
||||||
|
* RAII.
|
||||||
|
* Memory leaks.
|
||||||
|
* Dangling references.
|
||||||
|
* Iterator invalidation.
|
||||||
|
|
||||||
|
Do not:
|
||||||
|
|
||||||
|
* Return references to local variables.
|
||||||
|
* Store pointers to temporary objects.
|
||||||
|
* Use uninitialized data.
|
||||||
|
* Introduce undefined behavior.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 9. Third-party Libraries
|
||||||
|
|
||||||
|
Before adding or changing dependencies:
|
||||||
|
|
||||||
|
Check:
|
||||||
|
|
||||||
|
* Existing project dependencies.
|
||||||
|
* Build system impact.
|
||||||
|
* Maintenance cost.
|
||||||
|
|
||||||
|
Do not:
|
||||||
|
|
||||||
|
* Add large libraries for simple features.
|
||||||
|
* Duplicate existing library functionality.
|
||||||
|
* Modify third-party source code.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 10. AI Behavior Rules
|
||||||
|
|
||||||
|
AI-generated code must:
|
||||||
|
|
||||||
|
* Reuse existing code first.
|
||||||
|
* Preserve current architecture.
|
||||||
|
* Prefer simple solutions.
|
||||||
|
* Minimize risk and code changes.
|
||||||
|
|
||||||
|
Do not:
|
||||||
|
|
||||||
|
* Guess requirements.
|
||||||
|
* Add unrequested features.
|
||||||
|
* Redesign architecture.
|
||||||
|
* Add unnecessary abstraction layers.
|
||||||
|
|
||||||
|
Choose the implementation with:
|
||||||
|
|
||||||
|
> The smallest change, lowest risk, and best compatibility with existing code.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 11. Pre-commit Checklist
|
||||||
|
|
||||||
|
Before committing:
|
||||||
|
|
||||||
|
* [ ] Not on `main`.
|
||||||
|
* [ ] Changes match the requested task.
|
||||||
|
* [ ] New comments are in English.
|
||||||
|
* [ ] AI changes are marked when needed.
|
||||||
|
* [ ] No unrelated formatting changes.
|
||||||
|
* [ ] Build passes.
|
||||||
|
* [ ] No obvious performance/security/thread issues.
|
||||||
|
* [ ] No API, protocol, or data format breakage.
|
||||||
|
|
||||||
@@ -1,4 +1,9 @@
|
|||||||
cmake_minimum_required(VERSION 3.21)
|
cmake_minimum_required(VERSION 3.21)
|
||||||
|
|
||||||
|
if(APPLE)
|
||||||
|
message(FATAL_ERROR "This game does not support macOS")
|
||||||
|
endif()
|
||||||
|
|
||||||
project(Cubed LANGUAGES C CXX)
|
project(Cubed LANGUAGES C CXX)
|
||||||
|
|
||||||
set(CMAKE_CXX_STANDARD 23)
|
set(CMAKE_CXX_STANDARD 23)
|
||||||
@@ -34,6 +39,8 @@ add_subdirectory(third_party/imgui)
|
|||||||
|
|
||||||
add_subdirectory(third_party/dr_libs)
|
add_subdirectory(third_party/dr_libs)
|
||||||
|
|
||||||
|
add_subdirectory(third_party/stb)
|
||||||
|
|
||||||
add_executable(${PROJECT_NAME})
|
add_executable(${PROJECT_NAME})
|
||||||
|
|
||||||
add_subdirectory(src)
|
add_subdirectory(src)
|
||||||
@@ -123,16 +130,14 @@ target_include_directories(${PROJECT_NAME}
|
|||||||
|
|
||||||
target_link_libraries(${PROJECT_NAME}
|
target_link_libraries(${PROJECT_NAME}
|
||||||
PRIVATE
|
PRIVATE
|
||||||
glfw
|
SDL3::SDL3
|
||||||
glad
|
glad
|
||||||
glm::glm
|
|
||||||
OpenGL::GL
|
OpenGL::GL
|
||||||
soil2
|
|
||||||
Freetype::Freetype
|
Freetype::Freetype
|
||||||
tomlplusplus::tomlplusplus
|
|
||||||
imgui
|
imgui
|
||||||
dr_libs
|
dr_libs
|
||||||
tbb
|
tbb
|
||||||
|
stb
|
||||||
protobuf::libprotobuf
|
protobuf::libprotobuf
|
||||||
absl::log
|
absl::log
|
||||||
absl::check
|
absl::check
|
||||||
@@ -141,6 +146,9 @@ target_link_libraries(${PROJECT_NAME}
|
|||||||
absl::flat_hash_map
|
absl::flat_hash_map
|
||||||
zstd::zstd
|
zstd::zstd
|
||||||
OpenAL::OpenAL
|
OpenAL::OpenAL
|
||||||
|
harfbuzz::harfbuzz
|
||||||
|
Opus::Opus
|
||||||
|
assimp::assimp
|
||||||
$<$<PLATFORM_ID:Windows>:ws2_32>
|
$<$<PLATFORM_ID:Windows>:ws2_32>
|
||||||
|
|
||||||
)
|
)
|
||||||
|
|||||||
4
assets/SensitiveLexicon.json
Normal file
14
assets/cubed/blocks/air.json
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
{
|
||||||
|
"name": "air",
|
||||||
|
"properties": {
|
||||||
|
"is_liquid": false,
|
||||||
|
"is_cross_plane": false,
|
||||||
|
"is_transparent": true,
|
||||||
|
"is_passable": true,
|
||||||
|
"is_discard": true,
|
||||||
|
"is_blend": false,
|
||||||
|
"is_transitional": false,
|
||||||
|
"is_gas": true,
|
||||||
|
"roughness": 1.0
|
||||||
|
}
|
||||||
|
}
|
||||||
24
assets/cubed/blocks/dirt.json
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
{
|
||||||
|
"name": "dirt",
|
||||||
|
"properties": {
|
||||||
|
"is_liquid": false,
|
||||||
|
"is_cross_plane": false,
|
||||||
|
"is_transparent": false,
|
||||||
|
"is_passable": false,
|
||||||
|
"is_discard": false,
|
||||||
|
"is_blend": false,
|
||||||
|
"is_transitional": true,
|
||||||
|
"is_gas": false,
|
||||||
|
"roughness": 1.0
|
||||||
|
},
|
||||||
|
"texture": {
|
||||||
|
"type": "cuboid",
|
||||||
|
"path": "cubed:textures/blocks/dirt",
|
||||||
|
"normal": "cubed:normals/blocks/dirt"
|
||||||
|
},
|
||||||
|
"sounds": {
|
||||||
|
"break": "cubed:sounds/blocks/dirt/break.ogg",
|
||||||
|
"place": "cubed:sounds/blocks/dirt/place.ogg",
|
||||||
|
"walk": "cubed:sounds/blocks/dirt/walk.ogg"
|
||||||
|
}
|
||||||
|
}
|
||||||
22
assets/cubed/blocks/grass.json
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
{
|
||||||
|
"name": "grass",
|
||||||
|
"properties": {
|
||||||
|
"is_liquid": false,
|
||||||
|
"is_cross_plane": true,
|
||||||
|
"is_transparent": true,
|
||||||
|
"is_passable": true,
|
||||||
|
"is_discard": true,
|
||||||
|
"is_blend": false,
|
||||||
|
"is_transitional": false,
|
||||||
|
"is_gas": false,
|
||||||
|
"roughness": 0.9
|
||||||
|
},
|
||||||
|
"texture": {
|
||||||
|
"type": "cross",
|
||||||
|
"path": "cubed:textures/blocks/grass"
|
||||||
|
},
|
||||||
|
"sounds": {
|
||||||
|
"break": "cubed:sounds/blocks/grass/break.ogg",
|
||||||
|
"place": "cubed:sounds/blocks/grass/place.ogg"
|
||||||
|
}
|
||||||
|
}
|
||||||
24
assets/cubed/blocks/grass_block.json
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
{
|
||||||
|
"name": "grass_block",
|
||||||
|
"properties": {
|
||||||
|
"is_liquid": false,
|
||||||
|
"is_cross_plane": false,
|
||||||
|
"is_transparent": false,
|
||||||
|
"is_passable": false,
|
||||||
|
"is_discard": false,
|
||||||
|
"is_blend": false,
|
||||||
|
"is_transitional": true,
|
||||||
|
"is_gas": false,
|
||||||
|
"roughness": 0.9
|
||||||
|
},
|
||||||
|
"texture": {
|
||||||
|
"type": "cuboid",
|
||||||
|
"path": "cubed:textures/blocks/grass_block",
|
||||||
|
"normal": "cubed:normals/blocks/grass_block"
|
||||||
|
},
|
||||||
|
"sounds": {
|
||||||
|
"break": "cubed:sounds/blocks/grass_block/break.ogg",
|
||||||
|
"place": "cubed:sounds/blocks/grass_block/place.ogg",
|
||||||
|
"walk": "cubed:sounds/blocks/grass_block/walk.ogg"
|
||||||
|
}
|
||||||
|
}
|
||||||
23
assets/cubed/blocks/leaf.json
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
{
|
||||||
|
"name": "leaf",
|
||||||
|
"properties": {
|
||||||
|
"is_liquid": false,
|
||||||
|
"is_cross_plane": false,
|
||||||
|
"is_transparent": true,
|
||||||
|
"is_passable": false,
|
||||||
|
"is_discard": true,
|
||||||
|
"is_blend": false,
|
||||||
|
"is_transitional": false,
|
||||||
|
"is_gas": false,
|
||||||
|
"roughness": 0.7
|
||||||
|
},
|
||||||
|
"texture": {
|
||||||
|
"type": "cuboid",
|
||||||
|
"path": "cubed:textures/blocks/leaf"
|
||||||
|
},
|
||||||
|
"sounds": {
|
||||||
|
"break": "cubed:sounds/blocks/leaf/break.ogg",
|
||||||
|
"place": "cubed:sounds/blocks/leaf/place.ogg",
|
||||||
|
"walk": "cubed:sounds/blocks/leaf/walk.ogg"
|
||||||
|
}
|
||||||
|
}
|
||||||
24
assets/cubed/blocks/log.json
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
{
|
||||||
|
"name": "log",
|
||||||
|
"properties": {
|
||||||
|
"is_liquid": false,
|
||||||
|
"is_cross_plane": false,
|
||||||
|
"is_transparent": false,
|
||||||
|
"is_passable": false,
|
||||||
|
"is_discard": false,
|
||||||
|
"is_blend": false,
|
||||||
|
"is_transitional": false,
|
||||||
|
"is_gas": false,
|
||||||
|
"roughness": 0.7
|
||||||
|
},
|
||||||
|
"texture": {
|
||||||
|
"type": "cuboid",
|
||||||
|
"path": "cubed:textures/blocks/log",
|
||||||
|
"normal": "cubed:normals/blocks/log"
|
||||||
|
},
|
||||||
|
"sounds": {
|
||||||
|
"break": "cubed:sounds/blocks/log/break.ogg",
|
||||||
|
"place": "cubed:sounds/blocks/log/place.ogg",
|
||||||
|
"walk": "cubed:sounds/blocks/log/walk.ogg"
|
||||||
|
}
|
||||||
|
}
|
||||||
24
assets/cubed/blocks/sand.json
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
{
|
||||||
|
"name": "sand",
|
||||||
|
"properties": {
|
||||||
|
"is_liquid": false,
|
||||||
|
"is_cross_plane": false,
|
||||||
|
"is_transparent": false,
|
||||||
|
"is_passable": false,
|
||||||
|
"is_discard": false,
|
||||||
|
"is_blend": false,
|
||||||
|
"is_transitional": true,
|
||||||
|
"is_gas": false,
|
||||||
|
"roughness": 0.8
|
||||||
|
},
|
||||||
|
"texture": {
|
||||||
|
"type": "cuboid",
|
||||||
|
"path": "cubed:textures/blocks/sand",
|
||||||
|
"normal": "cubed:normals/blocks/sand"
|
||||||
|
},
|
||||||
|
"sounds": {
|
||||||
|
"break": "cubed:sounds/blocks/sand/break.ogg",
|
||||||
|
"place": "cubed:sounds/blocks/sand/place.ogg",
|
||||||
|
"walk": "cubed:sounds/blocks/sand/walk.ogg"
|
||||||
|
}
|
||||||
|
}
|
||||||
24
assets/cubed/blocks/snowy_grass_block.json
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
{
|
||||||
|
"name": "snowy_grass_block",
|
||||||
|
"properties": {
|
||||||
|
"is_liquid": false,
|
||||||
|
"is_cross_plane": false,
|
||||||
|
"is_transparent": false,
|
||||||
|
"is_passable": false,
|
||||||
|
"is_discard": false,
|
||||||
|
"is_blend": false,
|
||||||
|
"is_transitional": true,
|
||||||
|
"is_gas": false,
|
||||||
|
"roughness": 0.9
|
||||||
|
},
|
||||||
|
"texture": {
|
||||||
|
"type": "cuboid",
|
||||||
|
"path": "cubed:textures/blocks/snowy_grass_block",
|
||||||
|
"normal": "cubed:normals/blocks/snowy_grass_block"
|
||||||
|
},
|
||||||
|
"sounds": {
|
||||||
|
"break": "cubed:sounds/blocks/snowy_grass_block/break.ogg",
|
||||||
|
"place": "cubed:sounds/blocks/snowy_grass_block/place.ogg",
|
||||||
|
"walk": "cubed:sounds/blocks/snowy_grass_block/walk.ogg"
|
||||||
|
}
|
||||||
|
}
|
||||||
24
assets/cubed/blocks/stone.json
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
{
|
||||||
|
"name": "stone",
|
||||||
|
"properties": {
|
||||||
|
"is_liquid": false,
|
||||||
|
"is_cross_plane": false,
|
||||||
|
"is_transparent": false,
|
||||||
|
"is_passable": false,
|
||||||
|
"is_discard": false,
|
||||||
|
"is_blend": false,
|
||||||
|
"is_transitional": true,
|
||||||
|
"is_gas": false,
|
||||||
|
"roughness": 0.75
|
||||||
|
},
|
||||||
|
"texture": {
|
||||||
|
"type": "cuboid",
|
||||||
|
"path": "cubed:textures/blocks/stone",
|
||||||
|
"normal": "cubed:normals/blocks/stone"
|
||||||
|
},
|
||||||
|
"sounds": {
|
||||||
|
"break": "cubed:sounds/blocks/stone/break.ogg",
|
||||||
|
"place": "cubed:sounds/blocks/stone/place.ogg",
|
||||||
|
"walk": "cubed:sounds/blocks/stone/walk.ogg"
|
||||||
|
}
|
||||||
|
}
|
||||||
18
assets/cubed/blocks/water.json
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
{
|
||||||
|
"name": "water",
|
||||||
|
"properties": {
|
||||||
|
"is_liquid": true,
|
||||||
|
"is_cross_plane": false,
|
||||||
|
"is_transparent": true,
|
||||||
|
"is_passable": true,
|
||||||
|
"is_discard": false,
|
||||||
|
"is_blend": true,
|
||||||
|
"is_transitional": false,
|
||||||
|
"is_gas": false,
|
||||||
|
"roughness": 0.02
|
||||||
|
},
|
||||||
|
"texture": {
|
||||||
|
"type": "cuboid",
|
||||||
|
"path": "cubed:textures/blocks/water"
|
||||||
|
}
|
||||||
|
}
|
||||||
6
assets/cubed/creatures/pig.json
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"name": "pig",
|
||||||
|
"model": "cubed:models/creatures/pig/pig.glb",
|
||||||
|
"animation": "cubed:models/creatures/pig/animation.json",
|
||||||
|
"collision": "cubed:models/creatures/pig/collision.json"
|
||||||
|
}
|
||||||
5
assets/cubed/creatures/player.json
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"name": "player",
|
||||||
|
"model": "cubed:models/creatures/player/player.glb",
|
||||||
|
"collision": "cubed:models/creatures/player/collision.json"
|
||||||
|
}
|
||||||
7
assets/cubed/items/air.json
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
{
|
||||||
|
"name": "air",
|
||||||
|
"type": "block",
|
||||||
|
"block": "cubed:air",
|
||||||
|
"texture": "cubed:textures/items/block/air.png",
|
||||||
|
"description": ""
|
||||||
|
}
|
||||||
7
assets/cubed/items/dirt.json
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
{
|
||||||
|
"name": "dirt",
|
||||||
|
"type": "block",
|
||||||
|
"block": "cubed:dirt",
|
||||||
|
"texture": "cubed:textures/items/block/dirt.png",
|
||||||
|
"description": ""
|
||||||
|
}
|
||||||
7
assets/cubed/items/grass.json
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
{
|
||||||
|
"name": "grass",
|
||||||
|
"type": "block",
|
||||||
|
"block": "cubed:grass",
|
||||||
|
"texture": "cubed:textures/items/block/grass.png",
|
||||||
|
"description": ""
|
||||||
|
}
|
||||||
7
assets/cubed/items/grass_block.json
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
{
|
||||||
|
"name": "grass_block",
|
||||||
|
"type": "block",
|
||||||
|
"block": "cubed:grass_block",
|
||||||
|
"texture": "cubed:textures/items/block/grass_block.png",
|
||||||
|
"description": ""
|
||||||
|
}
|
||||||
7
assets/cubed/items/leaf.json
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
{
|
||||||
|
"name": "leaf",
|
||||||
|
"type": "block",
|
||||||
|
"block": "cubed:leaf",
|
||||||
|
"texture": "cubed:textures/items/block/leaf.png",
|
||||||
|
"description": ""
|
||||||
|
}
|
||||||
7
assets/cubed/items/log.json
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
{
|
||||||
|
"name": "log",
|
||||||
|
"type": "block",
|
||||||
|
"block": "cubed:log",
|
||||||
|
"texture": "cubed:textures/items/block/log.png",
|
||||||
|
"description": ""
|
||||||
|
}
|
||||||
7
assets/cubed/items/pig_spawn_egg.json
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
{
|
||||||
|
"name": "pig_spawn_egg",
|
||||||
|
"type": "spawn_egg",
|
||||||
|
"creature": "cubed:pig",
|
||||||
|
"texture": "cubed:textures/items/spawn_egg/pig_spawn_egg.png",
|
||||||
|
"description": ""
|
||||||
|
}
|
||||||
7
assets/cubed/items/sand.json
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
{
|
||||||
|
"name": "sand",
|
||||||
|
"type": "block",
|
||||||
|
"block": "cubed:sand",
|
||||||
|
"texture": "cubed:textures/items/block/sand.png",
|
||||||
|
"description": ""
|
||||||
|
}
|
||||||
7
assets/cubed/items/snowy_grass_block.json
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
{
|
||||||
|
"name": "snowy_grass_block",
|
||||||
|
"type": "block",
|
||||||
|
"block": "cubed:snowy_grass_block",
|
||||||
|
"texture": "cubed:textures/items/block/snowy_grass_block.png",
|
||||||
|
"description": ""
|
||||||
|
}
|
||||||
7
assets/cubed/items/stone.json
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
{
|
||||||
|
"name": "stone",
|
||||||
|
"type": "block",
|
||||||
|
"block": "cubed:stone",
|
||||||
|
"texture": "cubed:textures/items/block/stone.png",
|
||||||
|
"description": ""
|
||||||
|
}
|
||||||
7
assets/cubed/items/water.json
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
{
|
||||||
|
"name": "water",
|
||||||
|
"type": "block",
|
||||||
|
"block": "cubed:water",
|
||||||
|
"texture": "cubed:textures/items/block/water.png",
|
||||||
|
"description": ""
|
||||||
|
}
|
||||||
33
assets/cubed/models/creatures/pig/animation.json
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
{
|
||||||
|
"walk": {
|
||||||
|
"speed": 6.0,
|
||||||
|
"amplitude": 25.0
|
||||||
|
},
|
||||||
|
"run": {
|
||||||
|
"speed": 12.0,
|
||||||
|
"amplitude": 40.0
|
||||||
|
},
|
||||||
|
"body_bob": 0.03,
|
||||||
|
"head": {
|
||||||
|
"node": "Head",
|
||||||
|
"amplitude": 4.0
|
||||||
|
},
|
||||||
|
"legs": [
|
||||||
|
{
|
||||||
|
"node": "Foot_FL",
|
||||||
|
"phase": 0.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"node": "Foot_FR",
|
||||||
|
"phase": 3.14159
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"node": "Foot_HL",
|
||||||
|
"phase": 3.14159
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"node": "Foot_HR",
|
||||||
|
"phase": 0.0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
16
assets/cubed/models/creatures/pig/collision.json
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
{
|
||||||
|
"boxes": [
|
||||||
|
{
|
||||||
|
"center": [
|
||||||
|
0,
|
||||||
|
0.78,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"half": [
|
||||||
|
0.53,
|
||||||
|
0.78,
|
||||||
|
0.406
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
BIN
assets/cubed/models/creatures/pig/pig.glb
Normal file
16
assets/cubed/models/creatures/player/collision.json
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
{
|
||||||
|
"boxes": [
|
||||||
|
{
|
||||||
|
"center": [
|
||||||
|
0,
|
||||||
|
0.9,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"half": [
|
||||||
|
0.3,
|
||||||
|
0.9,
|
||||||
|
0.3
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
BIN
assets/cubed/models/creatures/player/player.glb
Normal file
|
Before Width: | Height: | Size: 3.3 KiB After Width: | Height: | Size: 3.3 KiB |
|
Before Width: | Height: | Size: 3.3 KiB After Width: | Height: | Size: 3.3 KiB |
|
Before Width: | Height: | Size: 3.3 KiB After Width: | Height: | Size: 3.3 KiB |
|
Before Width: | Height: | Size: 3.3 KiB After Width: | Height: | Size: 3.3 KiB |
|
Before Width: | Height: | Size: 3.3 KiB After Width: | Height: | Size: 3.3 KiB |
|
Before Width: | Height: | Size: 3.3 KiB After Width: | Height: | Size: 3.3 KiB |
|
Before Width: | Height: | Size: 4.0 KiB After Width: | Height: | Size: 4.0 KiB |
|
Before Width: | Height: | Size: 3.3 KiB After Width: | Height: | Size: 3.3 KiB |
|
Before Width: | Height: | Size: 4.0 KiB After Width: | Height: | Size: 4.0 KiB |
|
Before Width: | Height: | Size: 4.0 KiB After Width: | Height: | Size: 4.0 KiB |
|
Before Width: | Height: | Size: 4.0 KiB After Width: | Height: | Size: 4.0 KiB |
|
Before Width: | Height: | Size: 2.7 KiB After Width: | Height: | Size: 2.7 KiB |
|
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 955 B After Width: | Height: | Size: 955 B |
|
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 955 B After Width: | Height: | Size: 955 B |
|
Before Width: | Height: | Size: 2.7 KiB After Width: | Height: | Size: 2.7 KiB |
|
Before Width: | Height: | Size: 2.7 KiB After Width: | Height: | Size: 2.7 KiB |
|
Before Width: | Height: | Size: 2.7 KiB After Width: | Height: | Size: 2.7 KiB |
|
Before Width: | Height: | Size: 2.7 KiB After Width: | Height: | Size: 2.7 KiB |
|
Before Width: | Height: | Size: 2.7 KiB After Width: | Height: | Size: 2.7 KiB |
|
Before Width: | Height: | Size: 2.7 KiB After Width: | Height: | Size: 2.7 KiB |
|
Before Width: | Height: | Size: 4.0 KiB After Width: | Height: | Size: 4.0 KiB |
|
Before Width: | Height: | Size: 3.3 KiB After Width: | Height: | Size: 3.3 KiB |
|
Before Width: | Height: | Size: 4.0 KiB After Width: | Height: | Size: 4.0 KiB |
|
Before Width: | Height: | Size: 4.0 KiB After Width: | Height: | Size: 4.0 KiB |
|
Before Width: | Height: | Size: 4.0 KiB After Width: | Height: | Size: 4.0 KiB |
|
Before Width: | Height: | Size: 2.9 KiB After Width: | Height: | Size: 2.9 KiB |
|
Before Width: | Height: | Size: 3.1 KiB After Width: | Height: | Size: 3.1 KiB |
|
Before Width: | Height: | Size: 3.1 KiB After Width: | Height: | Size: 3.1 KiB |
|
Before Width: | Height: | Size: 3.1 KiB After Width: | Height: | Size: 3.1 KiB |
|
Before Width: | Height: | Size: 3.1 KiB After Width: | Height: | Size: 3.1 KiB |
|
Before Width: | Height: | Size: 3.1 KiB After Width: | Height: | Size: 3.1 KiB |
|
Before Width: | Height: | Size: 3.1 KiB After Width: | Height: | Size: 3.1 KiB |
27
assets/cubed/registry.json
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
{
|
||||||
|
"blocks": {
|
||||||
|
"air": 0,
|
||||||
|
"grass_block": 1,
|
||||||
|
"dirt": 2,
|
||||||
|
"stone": 3,
|
||||||
|
"sand": 4,
|
||||||
|
"log": 5,
|
||||||
|
"leaf": 6,
|
||||||
|
"water": 7,
|
||||||
|
"snowy_grass_block": 8,
|
||||||
|
"grass": 9
|
||||||
|
},
|
||||||
|
"items": {
|
||||||
|
"air": 0,
|
||||||
|
"grass_block": 1,
|
||||||
|
"dirt": 2,
|
||||||
|
"stone": 3,
|
||||||
|
"sand": 4,
|
||||||
|
"log": 5,
|
||||||
|
"leaf": 6,
|
||||||
|
"water": 7,
|
||||||
|
"snowy_grass_block": 8,
|
||||||
|
"grass": 9,
|
||||||
|
"pig_spawn_egg": 10
|
||||||
|
}
|
||||||
|
}
|
||||||