Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
64 changes: 47 additions & 17 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -1,29 +1,59 @@
name: build
on: [pull_request, push]
name: Build

on:
push:
branches: ["26.2"]
pull_request:
branches: ["26.2"]
workflow_dispatch:

jobs:
build:
strategy:
matrix:
java: [21]
runs-on: ubuntu-22.04
runs-on: ubuntu-latest
steps:
- name: checkout repository
- name: Checkout repository
uses: actions/checkout@v4
- name: validate gradle wrapper
uses: gradle/wrapper-validation-action@v2
- name: setup jdk ${{ matrix.java }}

- name: Validate Gradle wrapper
uses: gradle/wrapper-validation-action@v3

- name: Setup JDK 25
uses: actions/setup-java@v4
with:
java-version: ${{ matrix.java }}
distribution: 'temurin'
- name: make gradle wrapper executable
java-version: 25
distribution: temurin
cache: gradle

- name: Make Gradle wrapper executable
run: chmod +x ./gradlew
- name: build

- name: Build
run: ./gradlew build
- name: capture build artifacts
if: ${{ matrix.java == '21' }}

- name: Upload build artifacts
uses: actions/upload-artifact@v4
with:
name: Artifacts
name: enhancedblockentities-26.2
path: build/libs/*.jar
if-no-files-found: error

release:
needs: build
runs-on: ubuntu-latest
if: github.ref == 'refs/heads/26.2' && github.event_name == 'push'
permissions:
contents: write
steps:
- name: Download artifacts
uses: actions/download-artifact@v4
with:
name: enhancedblockentities-26.2
path: build/libs/

- name: Create release draft
uses: softprops/action-gh-release@v2
if: startsWith(github.ref_name, '26.')
with:
draft: true
files: build/libs/*.jar
tag_name: ${{ github.sha }}
28 changes: 28 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,31 @@
## ⚠️ Archival Notice (June 2026)

> **This mod is likely no longer needed as of Minecraft Java Edition 26.2 (internal: 1.21.11).**
>
> Mojang completely overhauled the rendering pipeline in 26.x. The new architecture already addresses the core problems EBE was solving — see details below.
>
> **We propose this repository be archived.** If you disagree or have evidence the performance/visual gaps still exist in 26.x vanilla, please open an issue before archival.

---

### What happened to MC 26.2 support?

A port to MC 26.2 was attempted in [PR #321](https://github.com/FoundationGames/EnhancedBlockEntities/pull/321). After ~8 hours of work, it became clear that a 1:1 port is not possible — the rendering system EBE is built on has been replaced:

| EBE relied on | Removed/replaced in MC 26.x |
|---|---|
| `BakedModel` interface | Replaced by `BlockStateModel` (`net.minecraft.client.renderer.block.dispatch`) |
| `BlockEntityRenderDispatcher.render(BlockEntityRenderer, BlockEntity, ...)` | Two-phase render: `BlockEntity` → `BlockEntityRenderState` → pixels |
| `FabricBakedModelManager.getModel(Identifier)` | `FabricModelManager.getModel(ExtraModelKey<T>)` — typed key-based API |
| `BlockRenderLayerMap` (Fabric API) | Removed entirely from Fabric API for 26.x |
| `VertexConsumerProvider` / `MultiBufferSource` | Replaced by `SubmitNodeCollector` and new pipeline |

Mojang's new **Entity Render State** system separates state extraction (game thread) from rendering (render thread), which provides the same caching and parallelism benefits EBE was delivering as a workaround. The new `BlockStateModel` pipeline already gets proper ambient occlusion and chunk-integrated lighting.

The one remaining gap worth investigating: whether block entity render states get equivalent AO/lighting quality compared to static chunk geometry. If that gap exists in 26.x vanilla, a slimmer mod focused only on lighting quality (not full static baking) could still have value. If you want to explore this, check [PR #321](https://github.com/FoundationGames/EnhancedBlockEntities/pull/321) for a starting point.

---

## Enhanced Block Entities

EBE is a **100% client side** Minecraft mod for the **[Fabric](https://fabricmc.net/use/)** mod loader which aims to increase the performance of block entity rendering, as well as offer customizability via resource packs. <br/><br/>
Expand Down
40 changes: 14 additions & 26 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -1,34 +1,30 @@
plugins {
id 'fabric-loom' version '1.8-SNAPSHOT'
id 'net.fabricmc.fabric-loom' version "${loom_version}"
id 'maven-publish'
}

sourceCompatibility = JavaVersion.VERSION_21
targetCompatibility = JavaVersion.VERSION_21

archivesBaseName = project.archives_base_name
base.archivesName = project.archives_base_name
version = project.mod_version
group = project.maven_group

repositories {
maven { url = 'https://maven.terraformersmc.com/' }
maven { url = 'https://api.modrinth.com/maven/' }
maven { url = 'https://maven.fabricmc.net/' }
}

dependencies {
// To change the versions see the gradle.properties file
minecraft "com.mojang:minecraft:${project.minecraft_version}"
mappings "net.fabricmc:yarn:${project.yarn_mappings}:v2"
modImplementation "net.fabricmc:fabric-loader:${project.loader_version}"
implementation "net.fabricmc:fabric-loader:${project.loader_version}"

// Fabric API. This is technically optional, but you probably want it anyway.
modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}"
// Fabric API
implementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}"

// Mod Menu because config screen access from another place
modApi "com.terraformersmc:modmenu:${project.modmenu_version}"
// Mod Menu for config screen (compile-only)
compileOnly "com.terraformersmc:modmenu:${project.modmenu_version}"

// Sodium for compatibility
modCompileOnlyApi "maven.modrinth:sodium:${project.sodium_version}"
// Sodium for compatibility (compile-only)
compileOnly "maven.modrinth:sodium:${project.sodium_version}"
}

processResources {
Expand All @@ -40,41 +36,33 @@ processResources {
}

tasks.withType(JavaCompile).configureEach {
// ensure that the encoding is set to UTF-8, no matter what the system default is
// this fixes some edge cases with special characters not displaying correctly
// see http://yodaconditions.net/blog/fix-for-java-file-encoding-problems-with-gradle.html
// If Javadoc is generated, this must be specified in that task too.
it.options.encoding = "UTF-8"
it.options.release = 25
}

java {
// Loom will automatically attach sourcesJar to a RemapSourcesJar task and to the "build" task
// if it is present.
// If you remove this line, sources will not be generated.
sourceCompatibility = JavaVersion.VERSION_25
targetCompatibility = JavaVersion.VERSION_25
withSourcesJar()
}

jar {
from("LICENSE") {
rename { "${it}_${project.archivesBaseName}"}
rename { "${it}_${project.archives_base_name}"}
}
}

loom {
accessWidenerPath = file("src/main/resources/enhancedblockentities.accesswidener")
}

// configure the maven publication
publishing {
publications {
mavenJava(MavenPublication) {
from components.java
}
}

// Select the repositories you want to publish to
// To publish to maven local, no extra repositories are necessary. Just use the task `publishToMavenLocal`.
repositories {
// See https://docs.gradle.org/current/userguide/publishing_maven.html for information on how to set up publishing.
}
}
15 changes: 8 additions & 7 deletions gradle.properties
Original file line number Diff line number Diff line change
@@ -1,14 +1,15 @@
org.gradle.jvmargs=-Xmx2G

minecraft_version=1.21.4
yarn_mappings=1.21.4+build.8
loader_version=0.16.10
minecraft_version=26.2
yarn_mappings=1.21.11+build.6
loader_version=0.19.3
loom_version=1.17-SNAPSHOT

fabric_version=0.114.3+1.21.4
fabric_version=0.153.0+26.2

mod_version = 0.11.4+1.21.4
mod_version = 0.11.5+26.2
maven_group = foundationgames
archives_base_name = enhancedblockentities

modmenu_version=13.0.0
sodium_version=mc1.21.4-0.6.6-fabric
modmenu_version=20.0.0-beta.4
sodium_version=mc26.2-0.9.1-beta.2-fabric
2 changes: 1 addition & 1 deletion gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.10-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-9.5.1-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
Expand Down
Loading