diff --git a/BUILDING.txt b/BUILDING.txt new file mode 100644 index 0000000..2e26d73 --- /dev/null +++ b/BUILDING.txt @@ -0,0 +1,113 @@ +Rivencraft Build Instructions +============================ + +These instructions apply when source code, models, textures, data, or other +resources have been changed. + +Requirements +------------ + +- Java 21 JDK +- A working Gradle wrapper +- The project dependencies available in the Gradle cache, or network access + for Gradle to download them + +The project targets Minecraft 1.21.1 and NeoForge 21.1.251. + +1. Open the project directory +-------------------------------- + + cd /path/to/rivencraft + +2. Check the changed files +-------------------------- + +Confirm that model, texture, and other resource files are inside +`src/main/resources`. Java source files belong under `src/main/java`. + +For example, block models are normally stored under: + + src/main/resources/assets/rivencraft/models/block/ + +Resource files placed under `src/main/resources` are automatically included in +the finished mod JAR by Gradle. + +3. Update the version when appropriate +--------------------------------------- + +Rivencraft uses the version format `x.y.z.b`: + +- `x`: major release +- `y`: milestone completion +- `z`: release slice +- `b`: bug fixes and additional work within that slice + +Edit `mod_version` in `gradle.properties` before creating a new release. Do +not reuse a version that has already been published. + +4. Build the mod +---------------- + +From the project directory, run: + + ./gradlew build --offline + +If the required dependencies are not cached locally, remove `--offline`: + + ./gradlew build + +On systems using mise-managed Java and Gradle, use: + + mise exec -- ./gradlew build --offline + +5. Run the automated tests +-------------------------- + +To build and run the GameTest suite: + + ./gradlew build runGameTestServer --offline + +Or, with mise: + + mise exec -- ./gradlew build runGameTestServer --offline + +All required GameTests should pass before distributing a build. + +6. Locate and inspect the JAR +----------------------------- + +Build outputs are written to: + + build/libs/ + +The filename uses the configured version, for example: + + build/libs/rivencraft-0.3.6.9.jar + +To verify that changed resource files are packaged: + + unzip -l build/libs/rivencraft-VERSION.jar | rg 'models|textures|data' + +Replace `VERSION` with the actual version number. + +To create a checksum for distribution: + + sha256sum build/libs/rivencraft-VERSION.jar + +7. Stop the Gradle daemon when finished +---------------------------------------- + +This is optional, but useful after a long test run: + + ./gradlew --stop + +Release checklist +----------------- + +- Confirm the version was incremented when required. +- Confirm the build completed successfully. +- Confirm all required GameTests passed. +- Confirm changed resources are present in the JAR. +- Generate and record the SHA-256 checksum. +- Test the JAR in the target Minecraft 1.21.1 NeoForge instance. +- Publish the JAR only after client-side testing is complete. diff --git a/dev images/Pasted image.png b/dev images/Pasted image.png new file mode 100644 index 0000000..7beeff1 Binary files /dev/null and b/dev images/Pasted image.png differ diff --git a/dev images/legacy.png b/dev images/legacy.png deleted file mode 100644 index 1e8d975..0000000 Binary files a/dev images/legacy.png and /dev/null differ diff --git a/dev images/rivencraft.png b/dev images/rivencraft.png deleted file mode 100644 index e678981..0000000 Binary files a/dev images/rivencraft.png and /dev/null differ diff --git a/gradle.properties b/gradle.properties index 4d28865..25522fb 100644 --- a/gradle.properties +++ b/gradle.properties @@ -35,7 +35,7 @@ mod_name=Rivencraft # The license of the mod. Review your options at https://choosealicense.com/. All Rights Reserved is the default. mod_license=LGPL-3.0-or-later # The mod version. Rivencraft uses the x.y.z.b policy documented in README.md. -mod_version=0.3.6.8 +mod_version=0.3.6.9 immersive_portals_version=6.0.7 # The group ID for the mod. It is only important when publishing as an artifact to a Maven repository. # This should match the base package used for the mod sources. diff --git a/src/main/resources/assets/rivencraft/models/block/writing_desk.json b/src/main/resources/assets/rivencraft/models/block/writing_desk.json index f095c27..092c647 100644 --- a/src/main/resources/assets/rivencraft/models/block/writing_desk.json +++ b/src/main/resources/assets/rivencraft/models/block/writing_desk.json @@ -1,11 +1,62 @@ { - "parent": "minecraft:block/block", - "textures": {"wood":"rivencraft:block/writing_desk_wood","inlay":"rivencraft:block/writing_desk_inlay","particle":"rivencraft:block/writing_desk_wood"}, - "elements": [ - {"from":[0,0,1],"to":[16,1,15],"faces":{"up":{"texture":"#wood"},"down":{"texture":"#wood"},"north":{"texture":"#wood"},"south":{"texture":"#wood"},"east":{"texture":"#wood"},"west":{"texture":"#wood"}}}, - {"from":[0,8,0],"to":[16,9,16],"faces":{"up":{"texture":"#inlay"},"down":{"texture":"#wood"},"north":{"texture":"#wood"},"south":{"texture":"#wood"},"east":{"texture":"#wood"},"west":{"texture":"#wood"}}}, - {"from":[0,0,1],"to":[1,8,15],"faces":{"up":{"texture":"#wood"},"down":{"texture":"#wood"},"north":{"texture":"#wood"},"south":{"texture":"#wood"},"east":{"texture":"#wood"},"west":{"texture":"#wood"}}}, - {"from":[1,3,1],"to":[16,4,15],"faces":{"up":{"texture":"#wood"},"down":{"texture":"#wood"},"north":{"texture":"#wood"},"south":{"texture":"#wood"},"east":{"texture":"#wood"},"west":{"texture":"#wood"}}}, - {"from":[0,9,15],"to":[16,15,16],"faces":{"up":{"texture":"#wood"},"down":{"texture":"#wood"},"north":{"texture":"#wood"},"south":{"texture":"#wood"},"east":{"texture":"#wood"},"west":{"texture":"#wood"}}} - ] -} + "format_version": "26.3", + "credit": "Made with Blockbench", + "parent": "minecraft:block/block", + "textures": { + "2": "rivencraft:block/writing_desk", + "particle": "rivencraft:block/writing_desk" + }, + "elements": [ + { + "from": [0, 11, 0], + "to": [16, 12, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [0, 3, 0]}, + "faces": { + "north": {"uv": [1, 2, 2, 2.125], "texture": "#2"}, + "east": {"uv": [2.82031, 4.01563, 3.82031, 4.125], "texture": "#2"}, + "south": {"uv": [0, 2, 1, 2.125], "texture": "#2"}, + "west": {"uv": [2.9375, 0.125, 3, 2.125], "rotation": 90, "texture": "#2"}, + "up": {"uv": [1, 0, 2, 2], "texture": "#2"}, + "down": {"uv": [3, 0, 3.9375, 2], "texture": "#2"} + } + }, + { + "from": [0, 0, 1], + "to": [1, 11, 15], + "faces": { + "north": {"uv": [7.6875, 2.625, 7.75, 4], "texture": "#2"}, + "east": {"uv": [7.6875, 2.625, 6.6875, 4], "texture": "#2"}, + "south": {"uv": [1.42188, 10.78125, 2.4375, 11.85938], "texture": "#2"}, + "west": {"uv": [5.67969, 2.625, 6.6875, 4], "texture": "#2"}, + "up": {"uv": [0.08594, 10.36719, 1.14063, 11.83594], "texture": "#2"}, + "down": {"uv": [5.75, 5.25, 5.8125, 7.10938], "texture": "#2"} + } + }, + { + "from": [1, 5, 1], + "to": [16, 6, 15], + "rotation": {"angle": 0, "axis": "y", "origin": [0, 2, 0]}, + "faces": { + "north": {"uv": [3, 2, 3.9375, 2.125], "texture": "#2"}, + "east": {"uv": [2.8125, 4, 3.75, 4.125], "texture": "#2"}, + "south": {"uv": [1.35938, 11.71875, 2.44531, 12.71875], "texture": "#2"}, + "west": {"uv": [0.03125, 11.66406, 0.99219, 12.66406], "texture": "#2"}, + "up": {"uv": [1.875, 4, 2.8125, 2.125], "texture": "#2"}, + "down": {"uv": [0.9375, 2.125, 1.875, 4], "texture": "#2"} + } + }, + { + "from": [0, 0, 15], + "to": [16, 11, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [0, -9, 0]}, + "faces": { + "north": {"uv": [8.0625, 0, 9.0625, 1.375], "texture": "#2"}, + "east": {"uv": [6.625, 0.125, 6.6875, 1.5], "texture": "#2"}, + "south": {"uv": [5.625, 2.625, 6.625, 4], "texture": "#2"}, + "west": {"uv": [7.6875, 2.625, 7.75, 4], "texture": "#2"}, + "up": {"uv": [0, 15, 16, 16], "texture": "#2"}, + "down": {"uv": [0, 9.17969, 16, 10.17969], "texture": "#2"} + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/rivencraft/models/block/writing_desk_extension.json b/src/main/resources/assets/rivencraft/models/block/writing_desk_extension.json index 12685bf..ce5318d 100644 --- a/src/main/resources/assets/rivencraft/models/block/writing_desk_extension.json +++ b/src/main/resources/assets/rivencraft/models/block/writing_desk_extension.json @@ -1,11 +1,88 @@ { - "parent": "minecraft:block/block", - "textures": {"wood":"rivencraft:block/writing_desk_wood","inlay":"rivencraft:block/writing_desk_inlay","particle":"rivencraft:block/writing_desk_wood"}, - "elements": [ - {"from":[0,0,1],"to":[16,1,15],"faces":{"up":{"texture":"#wood"},"down":{"texture":"#wood"},"north":{"texture":"#wood"},"south":{"texture":"#wood"},"east":{"texture":"#wood"},"west":{"texture":"#wood"}}}, - {"from":[0,8,0],"to":[16,9,16],"faces":{"up":{"texture":"#wood"},"down":{"texture":"#wood"},"north":{"texture":"#wood"},"south":{"texture":"#wood"},"east":{"texture":"#wood"},"west":{"texture":"#wood"}}}, - {"from":[15,0,1],"to":[16,8,15],"faces":{"up":{"texture":"#wood"},"down":{"texture":"#wood"},"north":{"texture":"#wood"},"south":{"texture":"#wood"},"east":{"texture":"#wood"},"west":{"texture":"#wood"}}}, - {"from":[0,3,1],"to":[15,4,15],"faces":{"up":{"texture":"#wood"},"down":{"texture":"#wood"},"north":{"texture":"#wood"},"south":{"texture":"#wood"},"east":{"texture":"#wood"},"west":{"texture":"#wood"}}}, - {"from":[0,9,15],"to":[16,15,16],"faces":{"up":{"texture":"#wood"},"down":{"texture":"#wood"},"north":{"texture":"#wood"},"south":{"texture":"#wood"},"east":{"texture":"#wood"},"west":{"texture":"#wood"}}} - ] -} + "format_version": "26.3", + "credit": "Made with Blockbench", + "parent": "minecraft:block/block", + "textures": { + "2": "rivencraft:block/writing_desk", + "particle": "rivencraft:block/writing_desk" + }, + "elements": [ + { + "from": [1, 0, 1], + "to": [15, 1, 15], + "rotation": {"angle": 0, "axis": "y", "origin": [1, 0, 0]}, + "faces": { + "north": {"uv": [1.8125, 4.125, 2.8125, 4.25], "texture": "#2"}, + "east": {"uv": [0.21875, 11.88281, 1.04688, 12.88281], "texture": "#2"}, + "south": {"uv": [1.53906, 10.5625, 2.63281, 11.5625], "texture": "#2"}, + "west": {"uv": [0.14063, 10.5625, 1.17969, 11.5625], "texture": "#2"}, + "up": {"uv": [1.8125, 4.125, 2.8125, 2.125], "texture": "#2"}, + "down": {"uv": [4, 0, 5, 2], "texture": "#2"} + } + }, + { + "from": [0, 11, 0], + "to": [16, 12, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [0, 3, 0]}, + "faces": { + "north": {"uv": [2, 2, 3, 2.125], "texture": "#2"}, + "east": {"uv": [1, 0, 1.0625, 2], "rotation": 90, "texture": "#2"}, + "south": {"uv": [3, 2, 4, 2.125], "texture": "#2"}, + "west": {"uv": [2.8125, 4, 3.8125, 4.125], "texture": "#2"}, + "up": {"uv": [2, 0, 3, 2], "texture": "#2"}, + "down": {"uv": [9, 0, 10, 2], "texture": "#2"} + } + }, + { + "from": [15, 0, 1], + "to": [16, 11, 15], + "faces": { + "north": {"uv": [7.6875, 2.625, 7.75, 4], "texture": "#2"}, + "east": {"uv": [10.00156, 0.625, 11.00156, 2], "texture": "#2"}, + "south": {"uv": [1.99219, 10.77344, 2.99219, 12.02344], "texture": "#2"}, + "west": {"uv": [6.6875, 2.625, 7.6875, 4], "texture": "#2"}, + "up": {"uv": [0.49219, 10.96094, 1.49219, 12.08594], "texture": "#2"}, + "down": {"uv": [5.75313, 5.36719, 5.8125, 7.125], "texture": "#2"} + } + }, + { + "from": [0, 0, 1], + "to": [1, 11, 15], + "rotation": {"angle": 0, "axis": "y", "origin": [-15, 0, 0]}, + "faces": { + "north": {"uv": [7.68828, 2.625, 7.75078, 4], "texture": "#2"}, + "east": {"uv": [7.6875, 2.62539, 6.6875, 4.00039], "texture": "#2"}, + "south": {"uv": [0.05469, 12.22656, 1.05469, 13.32031], "texture": "#2"}, + "west": {"uv": [3, 0, 4, 1.375], "texture": "#2"}, + "up": {"uv": [0.15625, 10.83594, 1.15625, 11.97656], "texture": "#2"}, + "down": {"uv": [7, 4.60156, 7.0625, 6.375], "texture": "#2"} + } + }, + { + "from": [1, 5, 1], + "to": [15, 6, 15], + "rotation": {"angle": 0, "axis": "y", "origin": [1, 2, 0]}, + "faces": { + "north": {"uv": [1.8125, 4.25, 2.8125, 4.125], "texture": "#2"}, + "east": {"uv": [1.86719, 11.82813, 2.79688, 12.82813], "texture": "#2"}, + "south": {"uv": [0.32813, 11.80469, 1.28906, 12.80469], "texture": "#2"}, + "west": {"uv": [0.27344, 10.5625, 1.53125, 11.5625], "texture": "#2"}, + "up": {"uv": [1.8125, 4.125, 2.8125, 2.125], "texture": "#2"}, + "down": {"uv": [9, 0, 10, 2], "texture": "#2"} + } + }, + { + "from": [0, 0, 15], + "to": [16, 11, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [0, -9, 0]}, + "faces": { + "north": {"uv": [9, 0.125, 10, 1.5], "texture": "#2"}, + "east": {"uv": [10.8125, 0.625, 10.875, 2], "texture": "#2"}, + "south": {"uv": [10.875, 0.625, 11.875, 2], "texture": "#2"}, + "west": {"uv": [6.6875, 0.125, 6.75, 1.5], "texture": "#2"}, + "up": {"uv": [0, 15, 16, 16], "texture": "#2"}, + "down": {"uv": [2.8125, 4, 3.8125, 4.125], "texture": "#2"} + } + } + ] +} \ No newline at end of file