Compare commits
20 Commits
8faf4c9a81
...
feature/js
| Author | SHA1 | Date | |
|---|---|---|---|
| 4268dc6047 | |||
| cc95fb0f9d | |||
| 10d2e4a813 | |||
| 782c7c6092 | |||
| bc4bbe1ff2 | |||
|
|
1baa2d6672 | ||
|
|
236e7c0433 | ||
|
|
def311c7dd | ||
|
|
45d2c8234a | ||
|
|
0f731530da | ||
|
|
2b75c510af | ||
|
|
d6e1e4a50e | ||
|
|
d62b310a21 | ||
|
|
cc2df5e4ec | ||
|
|
03259f323c | ||
|
|
913809a5f0 | ||
|
|
b1341d7da4 | ||
|
|
8a4081cf9c | ||
|
|
0f75144b2f | ||
|
|
30f843ba6b |
18
.github/workflows/format-check.yml
vendored
@@ -1,4 +1,3 @@
|
||||
# .github/workflows/format-check.yml
|
||||
name: Code Format Check
|
||||
|
||||
on: [push, pull_request]
|
||||
@@ -9,9 +8,22 @@ permissions:
|
||||
jobs:
|
||||
formatting:
|
||||
runs-on: ubuntu-latest
|
||||
container: silkeh/clang:latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Install LLVM 22
|
||||
run: |
|
||||
wget https://apt.llvm.org/llvm.sh
|
||||
chmod +x llvm.sh
|
||||
sudo ./llvm.sh 22
|
||||
|
||||
sudo apt-get install -y clang-format-22
|
||||
|
||||
clang-format-22 --version
|
||||
|
||||
- name: Run clang-format
|
||||
run: |
|
||||
find src include -name '*.cpp' -o -name '*.h' -print0 | xargs -0 clang-format --dry-run --Werror
|
||||
find src include \
|
||||
\( -name '*.cpp' -o -name '*.hpp' \) \
|
||||
-print0 | xargs -0 clang-format-22 --dry-run --Werror
|
||||
161
.github/workflows/release-build.yml
vendored
Normal file
@@ -0,0 +1,161 @@
|
||||
name: Release-Build
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
version:
|
||||
description: Version
|
||||
required: false
|
||||
default: dev
|
||||
|
||||
push:
|
||||
tags:
|
||||
- "v*"
|
||||
|
||||
permissions:
|
||||
contents: write
|
||||
|
||||
jobs:
|
||||
|
||||
build:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include:
|
||||
- os: windows-2022
|
||||
platform: windows
|
||||
|
||||
|
||||
runs-on: ${{ matrix.os }}
|
||||
env:
|
||||
VCPKG_BINARY_SOURCES: clear;files,${{ github.workspace }}/.vcpkg-cache,readwrite
|
||||
steps:
|
||||
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
|
||||
- name: Get Version
|
||||
id: version
|
||||
shell: bash
|
||||
run: |
|
||||
if [[ "${GITHUB_REF}" == refs/tags/* ]]; then
|
||||
VERSION="${GITHUB_REF_NAME#v}"
|
||||
else
|
||||
VERSION="${{ github.event.inputs.version }}"
|
||||
fi
|
||||
|
||||
echo "version=$VERSION" >> "$GITHUB_OUTPUT"
|
||||
|
||||
- name: Setup MSVC
|
||||
if: matrix.platform == 'windows'
|
||||
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
|
||||
run: |
|
||||
git clone https://github.com/microsoft/vcpkg.git
|
||||
./vcpkg/bootstrap-vcpkg.bat
|
||||
|
||||
- name: Configure
|
||||
if: matrix.platform == 'windows'
|
||||
run: >
|
||||
cmake
|
||||
-B build
|
||||
-G Ninja
|
||||
-DCMAKE_BUILD_TYPE=Release
|
||||
-DCMAKE_TOOLCHAIN_FILE=${{ github.workspace }}/vcpkg/scripts/buildsystems/vcpkg.cmake
|
||||
-DVCPKG_TARGET_TRIPLET=x64-windows-release
|
||||
-DVCPKG_BUILD_TYPE=release
|
||||
-DBUILD_TESTING=OFF
|
||||
"-DCUBED_VERSION=${{ steps.version.outputs.version }}"
|
||||
|
||||
- name: Build
|
||||
run: cmake --build build --config Release --target Cubed
|
||||
|
||||
- name: Copy assets
|
||||
if: matrix.platform == 'windows'
|
||||
shell: pwsh
|
||||
run: |
|
||||
if (Test-Path assets) {
|
||||
Copy-Item -Path assets -Destination build/Cubed -Recurse
|
||||
} else {
|
||||
Write-Warning "assets folder not found, skipping copy"
|
||||
}
|
||||
|
||||
- name: Create Zip
|
||||
if: matrix.platform == 'windows'
|
||||
shell: pwsh
|
||||
run: |
|
||||
Compress-Archive `
|
||||
-Path build/Cubed/* `
|
||||
-DestinationPath Cubed-${{ steps.version.outputs.version }}-windows-x64.zip
|
||||
|
||||
####################################################################
|
||||
# Upload
|
||||
####################################################################
|
||||
|
||||
- name: Upload Windows Artifacts
|
||||
if: matrix.platform == 'windows'
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: windows
|
||||
path: |
|
||||
*.zip
|
||||
|
||||
##########################################################################
|
||||
# Release
|
||||
##########################################################################
|
||||
|
||||
release:
|
||||
|
||||
needs: build
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 1
|
||||
|
||||
- name: Download Artifacts
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
path: artifacts
|
||||
|
||||
- name: Generate SHA256
|
||||
run: |
|
||||
cd artifacts
|
||||
|
||||
find . -type f | while read file
|
||||
do
|
||||
sha256sum "$file"
|
||||
done > SHA256SUMS
|
||||
|
||||
- name: Determine prerelease
|
||||
id: prerelease
|
||||
run: |
|
||||
MAIN_BRANCH="${{ github.event.repository.default_branch }}"
|
||||
git fetch origin "$MAIN_BRANCH" --depth=1 2>/dev/null || true
|
||||
|
||||
if git merge-base --is-ancestor "${{ github.sha }}" "origin/$MAIN_BRANCH"; then
|
||||
echo "is_prerelease=false" >> $GITHUB_OUTPUT
|
||||
echo "is_prerelease=false"
|
||||
else
|
||||
echo "is_prerelease=true" >> $GITHUB_OUTPUT
|
||||
echo "is_prerelease=true"
|
||||
fi
|
||||
|
||||
- name: Release
|
||||
uses: softprops/action-gh-release@v2
|
||||
with:
|
||||
files: |
|
||||
artifacts/**/*
|
||||
artifacts/SHA256SUMS
|
||||
generate_release_notes: true
|
||||
draft: false
|
||||
prerelease: ${{ steps.prerelease.outputs.is_prerelease }}
|
||||
5
.gitignore
vendored
@@ -14,6 +14,7 @@
|
||||
*.pch
|
||||
*.sbr
|
||||
build/
|
||||
build_debug/
|
||||
Build/
|
||||
bin/
|
||||
Debug/
|
||||
@@ -41,5 +42,7 @@ CMakeError.log
|
||||
*~
|
||||
.DS_Store
|
||||
assets/config.toml
|
||||
assets/server-config.toml
|
||||
.venv/
|
||||
pyout/
|
||||
pyout/
|
||||
vcpkg_installed/
|
||||
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.
|
||||
|
||||
307
CMakeLists.txt
@@ -1,4 +1,9 @@
|
||||
cmake_minimum_required(VERSION 3.14...3.24)
|
||||
cmake_minimum_required(VERSION 3.21)
|
||||
|
||||
if(APPLE)
|
||||
message(FATAL_ERROR "This game does not support macOS")
|
||||
endif()
|
||||
|
||||
project(Cubed LANGUAGES C CXX)
|
||||
|
||||
set(CMAKE_CXX_STANDARD 23)
|
||||
@@ -6,215 +11,155 @@ set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||
set(CMAKE_CXX_EXTENSIONS OFF)
|
||||
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
||||
|
||||
if(NOT CMAKE_BUILD_TYPE)
|
||||
set(CMAKE_BUILD_TYPE Debug)
|
||||
if(NOT CMAKE_CONFIGURATION_TYPES
|
||||
AND NOT CMAKE_BUILD_TYPE)
|
||||
|
||||
set(CMAKE_BUILD_TYPE Debug CACHE STRING "" FORCE)
|
||||
|
||||
endif()
|
||||
|
||||
if(NOT DEFINED CUBED_VERSION)
|
||||
set(CUBED_VERSION "dev")
|
||||
endif()
|
||||
|
||||
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${PROJECT_NAME})
|
||||
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${PROJECT_NAME})
|
||||
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
|
||||
|
||||
if(MSVC)
|
||||
add_compile_options(/utf-8)
|
||||
endif()
|
||||
|
||||
find_package(OpenGL REQUIRED)
|
||||
|
||||
if (UNIX AND NOT APPLE)
|
||||
find_package(Freetype REQUIRED)
|
||||
find_package(PkgConfig REQUIRED)
|
||||
pkg_check_modules(EGL REQUIRED egl)
|
||||
pkg_check_modules(Wayland REQUIRED wayland-client wayland-egl)
|
||||
find_package(glfw3 REQUIRED)
|
||||
endif()
|
||||
|
||||
add_library(glad STATIC third_party/glad/src/glad.c)
|
||||
target_include_directories(glad PUBLIC third_party/glad/include)
|
||||
|
||||
include(FetchContent)
|
||||
|
||||
if (WIN32)
|
||||
FetchContent_Declare(
|
||||
glfw
|
||||
GIT_REPOSITORY https://github.com/glfw/glfw.git
|
||||
GIT_TAG 3.4
|
||||
)
|
||||
|
||||
set(GLFW_BUILD_DOCS OFF CACHE BOOL "" FORCE)
|
||||
set(GLFW_BUILD_TESTS OFF CACHE BOOL "" FORCE)
|
||||
set(GLFW_BUILD_EXAMPLES OFF CACHE BOOL "" FORCE)
|
||||
set(GLFW_INSTALL OFF CACHE BOOL "" FORCE)
|
||||
set(GLFW_VULKAN_STATIC ON CACHE BOOL "" FORCE)
|
||||
set(GLFW_STATIC ON CACHE BOOL "" FORCE)
|
||||
|
||||
FetchContent_MakeAvailable(glfw)
|
||||
|
||||
FetchContent_Declare(
|
||||
freetype
|
||||
GIT_REPOSITORY https://gitlab.freedesktop.org/freetype/freetype.git
|
||||
GIT_TAG VER-2-14-3
|
||||
)
|
||||
FetchContent_MakeAvailable(freetype)
|
||||
if(TARGET freetype)
|
||||
add_library(Freetype::Freetype ALIAS freetype)
|
||||
endif()
|
||||
set(_BUILD_SHARED_LIBS_SAVED ${BUILD_SHARED_LIBS})
|
||||
set(BUILD_SHARED_LIBS ON)
|
||||
|
||||
FetchContent_Declare(
|
||||
onetbb
|
||||
GIT_REPOSITORY https://github.com/uxlfoundation/oneTBB.git
|
||||
GIT_TAG v2023.0.0
|
||||
)
|
||||
set(BUILD_TESTING OFF CACHE BOOL "Build tests" FORCE)
|
||||
set(TBB_TEST OFF CACHE BOOL "Build TBB tests" FORCE)
|
||||
FetchContent_MakeAvailable(onetbb)
|
||||
|
||||
set(BUILD_SHARED_LIBS ${_BUILD_SHARED_LIBS_SAVED})
|
||||
unset(_BUILD_SHARED_LIBS_SAVED)
|
||||
|
||||
endif()
|
||||
|
||||
FetchContent_Declare(
|
||||
glm
|
||||
GIT_REPOSITORY https://github.com/g-truc/glm.git
|
||||
GIT_TAG 1.0.3
|
||||
|
||||
list(APPEND CMAKE_MODULE_PATH
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/cmake"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules"
|
||||
)
|
||||
FetchContent_MakeAvailable(glm)
|
||||
FetchContent_Declare(
|
||||
soil2
|
||||
GIT_REPOSITORY https://github.com/SpartanJ/SOIL2.git
|
||||
GIT_TAG 1.31
|
||||
|
||||
)
|
||||
FetchContent_MakeAvailable(soil2)
|
||||
FetchContent_Declare(
|
||||
tomlplusplus
|
||||
GIT_REPOSITORY https://github.com/marzer/tomlplusplus.git
|
||||
GIT_TAG v3.4.0
|
||||
)
|
||||
FetchContent_MakeAvailable(tomlplusplus)
|
||||
|
||||
include(Dependencies)
|
||||
|
||||
add_subdirectory(third_party/glad)
|
||||
|
||||
add_subdirectory(third_party/imgui)
|
||||
|
||||
set(INCLUDE_DIR ${PROJECT_SOURCE_DIR}/include)
|
||||
add_subdirectory(third_party/dr_libs)
|
||||
|
||||
add_executable(${PROJECT_NAME}
|
||||
src/main.cpp
|
||||
src/app.cpp
|
||||
src/debug_collector.cpp
|
||||
src/camera.cpp
|
||||
src/config.cpp
|
||||
src/dev_panel.cpp
|
||||
src/gameplay/biome.cpp
|
||||
src/gameplay/chunk.cpp
|
||||
src/gameplay/chunk_generator.cpp
|
||||
src/gameplay/player.cpp
|
||||
src/gameplay/tree.cpp
|
||||
src/gameplay/world.cpp
|
||||
src/input.cpp
|
||||
src/map_table.cpp
|
||||
src/renderer.cpp
|
||||
src/shader.cpp
|
||||
src/texture_manager.cpp
|
||||
src/tools/cubed_random.cpp
|
||||
src/tools/math_tools.cpp
|
||||
src/tools/shader_tools.cpp
|
||||
src/tools/font.cpp
|
||||
src/tools/perlin_noise.cpp
|
||||
src/ui/text.cpp
|
||||
src/window.cpp
|
||||
src/gameplay/builders/biome_builder.cpp
|
||||
src/gameplay/builders/plain_builder.cpp
|
||||
src/gameplay/builders/mountain_builder.cpp
|
||||
src/gameplay/builders/river_builder.cpp
|
||||
src/gameplay/builders/desert_builder.cpp
|
||||
src/gameplay/builders/forest_builder.cpp
|
||||
src/gameplay/cave_carver.cpp
|
||||
src/gameplay/cave_path.cpp
|
||||
src/gameplay/builders/snowy_plain_builder.cpp
|
||||
src/gameplay/river_worm.cpp
|
||||
src/gameplay/river_path.cpp
|
||||
src/block.cpp
|
||||
src/gameplay/vertex_data.cpp
|
||||
src/gameplay/builders/ocean_builder.cpp
|
||||
add_subdirectory(third_party/stb)
|
||||
|
||||
add_executable(${PROJECT_NAME})
|
||||
|
||||
add_subdirectory(src)
|
||||
|
||||
file(GLOB_RECURSE PROTO_FILES
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/src/proto/*.proto
|
||||
)
|
||||
|
||||
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
|
||||
message(STATUS "Building with AddressSanitizer enabled for target: ${PROJECT_NAME}")
|
||||
protobuf_generate(
|
||||
TARGET ${PROJECT_NAME}
|
||||
LANGUAGE cpp
|
||||
PROTOS ${PROTO_FILES}
|
||||
IMPORT_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/src/proto
|
||||
)
|
||||
|
||||
target_compile_options(${PROJECT_NAME} PRIVATE
|
||||
#-fsanitize=address
|
||||
#-fsanitize=thread
|
||||
-fno-omit-frame-pointer
|
||||
-g
|
||||
)
|
||||
configure_file(
|
||||
src/version.hpp.in
|
||||
${CMAKE_BINARY_DIR}/generated/version.hpp
|
||||
@ONLY
|
||||
)
|
||||
|
||||
target_link_options(${PROJECT_NAME} PRIVATE
|
||||
#-fsanitize=address
|
||||
#-fsanitize=thread
|
||||
)
|
||||
target_compile_options(${PROJECT_NAME}
|
||||
PRIVATE
|
||||
$<$<CONFIG:Debug>:-fno-omit-frame-pointer>
|
||||
$<$<CONFIG:Debug>:-g>
|
||||
#$<$<CONFIG:Debug>:-fsanitize=address>
|
||||
#$<$<CONFIG:Debug>:-fsanitize=thread>
|
||||
|
||||
target_compile_definitions(${PROJECT_NAME} PRIVATE DEBUG_MODE)
|
||||
target_compile_definitions(${PROJECT_NAME} PRIVATE
|
||||
ASSETS_PATH="${CMAKE_SOURCE_DIR}/assets/"
|
||||
$<$<CXX_COMPILER_ID:GNU,Clang>:-Wall>
|
||||
$<$<CXX_COMPILER_ID:GNU,Clang>:-Wextra>
|
||||
$<$<CXX_COMPILER_ID:GNU,Clang>:-Wpedantic>
|
||||
|
||||
$<$<CXX_COMPILER_ID:MSVC>:/utf-8>
|
||||
$<$<CXX_COMPILER_ID:MSVC>:/W4>
|
||||
)
|
||||
|
||||
target_link_options(${PROJECT_NAME}
|
||||
PRIVATE
|
||||
#$<$<CONFIG:Debug>:-fsanitize=address>
|
||||
#$<$<CONFIG:Debug>:-fsanitize=thread>
|
||||
)
|
||||
|
||||
target_compile_definitions(${PROJECT_NAME}
|
||||
PRIVATE
|
||||
ASIO_STANDALONE
|
||||
ASIO_NO_DEPRECATED
|
||||
$<$<CONFIG:Debug>:DEBUG_MODE>
|
||||
$<$<CXX_COMPILER_ID:MSVC>:
|
||||
WIN32_LEAN_AND_MEAN
|
||||
NOMINMAX
|
||||
_CRT_SECURE_NO_WARNINGS
|
||||
>
|
||||
)
|
||||
|
||||
if(CMAKE_CONFIGURATION_TYPES)
|
||||
# Visual Studio / Xcode multi-configuration generator
|
||||
target_compile_definitions(${PROJECT_NAME}
|
||||
PRIVATE
|
||||
ASSETS_PATH="$<$<CONFIG:Debug>:${PROJECT_SOURCE_DIR}/assets/>$<$<NOT:$<CONFIG:Debug>>:./assets/>"
|
||||
)
|
||||
else()
|
||||
target_compile_definitions(${PROJECT_NAME} PRIVATE
|
||||
ASSETS_PATH="./assets/"
|
||||
)
|
||||
# Ninja / Makefiles single-configuration generator
|
||||
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
|
||||
target_compile_definitions(${PROJECT_NAME}
|
||||
PRIVATE
|
||||
ASSETS_PATH="${PROJECT_SOURCE_DIR}/assets/"
|
||||
)
|
||||
else()
|
||||
target_compile_definitions(${PROJECT_NAME}
|
||||
PRIVATE
|
||||
ASSETS_PATH="./assets/"
|
||||
)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
target_include_directories(${PROJECT_NAME} PUBLIC ${INCLUDE_DIR})
|
||||
|
||||
target_include_directories(${PROJECT_NAME}
|
||||
PRIVATE
|
||||
${PROJECT_SOURCE_DIR}/include
|
||||
${PROJECT_SOURCE_DIR}/third_party/asio/include
|
||||
${CMAKE_BINARY_DIR}/generated
|
||||
${PROJECT_BINARY_DIR}
|
||||
${PROJECT_BINARY_DIR}/src
|
||||
|
||||
)
|
||||
|
||||
|
||||
target_link_libraries(${PROJECT_NAME}
|
||||
PRIVATE
|
||||
glfw
|
||||
SDL3::SDL3
|
||||
glad
|
||||
glm::glm
|
||||
OpenGL::GL
|
||||
soil2
|
||||
Freetype::Freetype
|
||||
tomlplusplus::tomlplusplus
|
||||
imgui
|
||||
dr_libs
|
||||
tbb
|
||||
stb
|
||||
protobuf::libprotobuf
|
||||
absl::log
|
||||
absl::check
|
||||
absl::base
|
||||
absl::strings
|
||||
absl::flat_hash_map
|
||||
zstd::zstd
|
||||
OpenAL::OpenAL
|
||||
harfbuzz::harfbuzz
|
||||
Opus::Opus
|
||||
assimp::assimp
|
||||
$<$<PLATFORM_ID:Windows>:ws2_32>
|
||||
|
||||
)
|
||||
|
||||
if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
|
||||
# target_link_libraries(${PROJECT_NAME} PRIVATE tbb)
|
||||
endif()
|
||||
|
||||
if (UNIX AND NOT APPLE)
|
||||
target_link_libraries(${PROJECT_NAME}
|
||||
PRIVATE
|
||||
${EGL_LIBRARIES}
|
||||
${Wayland_LIBRARIES}
|
||||
if(WIN32)
|
||||
add_custom_command(
|
||||
TARGET ${PROJECT_NAME}
|
||||
POST_BUILD
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different
|
||||
$<TARGET_RUNTIME_DLLS:${PROJECT_NAME}>
|
||||
$<TARGET_FILE_DIR:${PROJECT_NAME}>
|
||||
COMMAND_EXPAND_LISTS
|
||||
)
|
||||
|
||||
|
||||
target_include_directories(${PROJECT_NAME}
|
||||
PRIVATE
|
||||
${EGL_INCLUDE_DIRS}
|
||||
${Wayland_INCLUDE_DIRS}
|
||||
)
|
||||
|
||||
|
||||
target_compile_options(${PROJECT_NAME} PRIVATE ${EGL_CFLAGS_OTHER} ${Wayland_CFLAGS_OTHER})
|
||||
endif()
|
||||
|
||||
if (WIN32)
|
||||
foreach(TBB_LIB IN ITEMS tbb tbbmalloc tbbmalloc_proxy)
|
||||
if(TARGET ${TBB_LIB})
|
||||
add_custom_command(
|
||||
TARGET ${PROJECT_NAME} POST_BUILD
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different
|
||||
$<TARGET_FILE:${TBB_LIB}>
|
||||
$<TARGET_FILE_DIR:${PROJECT_NAME}>
|
||||
COMMENT "Copying ${TBB_LIB}.dll"
|
||||
)
|
||||
else()
|
||||
message(STATUS "Target ${TBB_LIB} not found, skipping copy")
|
||||
endif()
|
||||
endforeach()
|
||||
endif()
|
||||
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
|
||||
}
|
||||
}
|
||||