Skip to content
Merged
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
3 changes: 3 additions & 0 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,7 @@ repositories {
mavenLocal()
maven { url "https://maven.covers1624.net/" }
maven { url "https://maven.blamejared.com/" }
maven { url "https://api.modrinth.com/maven" }
}

dependencies {
Expand All @@ -83,6 +84,8 @@ dependencies {
}
}

compileOnly 'maven.modrinth:embeddium:1.0.15+mc1.21.1'

compileOnly("mezz.jei:jei-${mc_version}-neoforge:${jei_version}") {
transitive false
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package codechicken.lib.internal.mixin.compat;

import net.neoforged.fml.event.lifecycle.FMLClientSetupEvent;
import org.embeddedt.embeddium.compat.ccl.CCLCompat;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Overwrite;
import org.spongepowered.asm.mixin.Pseudo;

/**
* Created by covers1624 on 2/7/25.
*/
@Pseudo
@Mixin (CCLCompat.class)
abstract class EmbeddiumCCLMixin {

/**
* @author covers1624
* @reason Its broken and CCL ships its own.
*/
@Overwrite
public static void onClientSetup(FMLClientSetupEvent event) {
}
}
Original file line number Diff line number Diff line change
@@ -1,19 +1,23 @@
package codechicken.lib.render.block;

import com.mojang.blaze3d.vertex.PoseStack;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.block.BlockRenderDispatcher;
import net.minecraft.core.Holder;
import net.minecraft.core.registries.BuiltInRegistries;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.material.Fluid;
import net.neoforged.api.distmarker.Dist;
import net.neoforged.api.distmarker.OnlyIn;
import net.neoforged.fml.ModList;
import org.embeddedt.embeddium.api.BlockRendererRegistry;
import org.jetbrains.annotations.ApiStatus.ScheduledForRemoval;
import org.jetbrains.annotations.Nullable;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.function.Predicate;

/**
Expand All @@ -23,6 +27,8 @@
*
* @see ICCBlockRenderer
*/
@Deprecated(forRemoval = true) // No replacement.
@ScheduledForRemoval (inVersion = "mc 1.21.2+")
public class BlockRenderingRegistry {

private static boolean initialized = false;
Expand All @@ -39,6 +45,10 @@ public static void init() {
mc.blockRenderer = new CCBlockRendererDispatcher(parentDispatcher, mc.getBlockColors());
initialized = true;
}

if (ModList.get().isLoaded("embeddium")) {
EmbeddiumSupport.init();
}
}

/**
Expand All @@ -51,6 +61,7 @@ public static void init() {
* @param renderer The {@link ICCBlockRenderer}.
* @throws IllegalArgumentException If the same Block is registered twice.
*/
@Deprecated // No replacement. Use a mixin.
public static synchronized void registerRenderer(Block block, ICCBlockRenderer renderer) {
ICCBlockRenderer prev = blockRenderers.get(block);
if (prev != null) {
Expand All @@ -69,6 +80,7 @@ public static synchronized void registerRenderer(Block block, ICCBlockRenderer r
* @param renderer The {@link ICCBlockRenderer}.
* @throws IllegalArgumentException If the same Fluid is registered twice.
*/
@Deprecated // No replacement. Use a mixin.
public static synchronized void registerRenderer(Fluid fluid, ICCBlockRenderer renderer) {
ICCBlockRenderer prev = fluidRenderers.get(fluid);
if (prev != null) {
Expand All @@ -83,6 +95,7 @@ public static synchronized void registerRenderer(Fluid fluid, ICCBlockRenderer r
*
* @param renderer The {@link ICCBlockRenderer}.
*/
@Deprecated // No replacement. Use a mixin.
public static synchronized void registerGlobalRenderer(ICCBlockRenderer renderer) {
globalRenderers.add(renderer);
}
Expand Down Expand Up @@ -114,4 +127,26 @@ static ICCBlockRenderer findFor(Fluid fluid, Predicate<ICCBlockRenderer> pred) {

return null;
}

private static class EmbeddiumSupport {

private static final Map<ICCBlockRenderer, BlockRendererRegistry.Renderer> ADAPTERS = new ConcurrentHashMap<>();
private static final ThreadLocal<PoseStack> POSE_STACK_CACHE = ThreadLocal.withInitial(PoseStack::new);

private static BlockRendererRegistry.Renderer adapt(ICCBlockRenderer renderer) {
return ADAPTERS.computeIfAbsent(renderer, e -> (ctx, random, consumer) -> {
e.renderBlock(ctx.state(), ctx.pos(), ctx.world(), POSE_STACK_CACHE.get(), consumer, random, ctx.modelData(), ctx.renderLayer());
return BlockRendererRegistry.RenderResult.OVERRIDE;
});
}

public static void init() {
BlockRendererRegistry.instance().registerRenderPopulator((resultList, ctx) -> {
ICCBlockRenderer renderer = BlockRenderingRegistry.findFor(ctx.state().getBlock(), e -> e.canHandleBlock(ctx.world(), ctx.pos(), ctx.state(), ctx.renderLayer()));
if (renderer != null) {
resultList.add(adapt(renderer));
}
});
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -26,12 +26,15 @@
import org.apache.commons.lang3.exception.ExceptionUtils;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.jetbrains.annotations.ApiStatus.ScheduledForRemoval;

import java.util.concurrent.TimeUnit;

/**
* Created by covers1624 on 8/09/2016.
*/
@Deprecated
@ScheduledForRemoval (inVersion = "mc 1.21.2+")
public class CCBlockRendererDispatcher extends BlockRenderDispatcher {

private static final Logger logger = LogManager.getLogger();
Expand Down
15 changes: 15 additions & 0 deletions src/main/java/codechicken/lib/render/block/ICCBlockRenderer.java
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.material.FluidState;
import net.neoforged.neoforge.client.model.data.ModelData;
import org.jetbrains.annotations.ApiStatus.ScheduledForRemoval;
import org.jetbrains.annotations.Nullable;

/**
Expand All @@ -22,7 +23,14 @@
* Created by covers1624 on 8/09/2016.
*
* @see BlockRenderingRegistry
* @deprecated Unfortunately, this has become a maintenance and compatability burden. Mods like Sodium
* are in every single modpack, and we can't realistically tell people not to use it. It's possible
* a Neo api may pop up that allows features similar to this API. But I'm not going to hold my breath.
* If someone still requires the functionality that this system provides, they should implement mixins
* themselves, or Sodium/Embeddium compatability.
*/
@Deprecated (forRemoval = true)
@ScheduledForRemoval (inVersion = "mc 1.21.2+")
public interface ICCBlockRenderer {

//region Block
Expand All @@ -36,6 +44,7 @@ public interface ICCBlockRenderer {
* @param renderType The {@link RenderType}, {@code null} for breaking.
* @return If you wish to render the BlockState.
*/
@Deprecated
boolean canHandleBlock(BlockAndTintGetter world, BlockPos pos, BlockState blockState, @Nullable RenderType renderType);

/**
Expand All @@ -53,6 +62,7 @@ public interface ICCBlockRenderer {
* @param data Any ModelData.
* @param renderType The {@link RenderType}, {@code null} for breaking.
*/
@Deprecated
void renderBlock(BlockState state, BlockPos pos, BlockAndTintGetter world, PoseStack mStack, VertexConsumer builder, RandomSource random, ModelData data, @Nullable RenderType renderType);

/**
Expand All @@ -66,6 +76,7 @@ public interface ICCBlockRenderer {
* @param builder The {@link VertexConsumer} to add quads to.
* @param data Any ModelData.
*/
@Deprecated
default void renderBreaking(BlockState state, BlockPos pos, BlockAndTintGetter world, PoseStack mStack, VertexConsumer builder, ModelData data) {
CCRenderState ccrs = CCRenderState.instance();
ccrs.overlay = OverlayTexture.NO_OVERLAY;
Expand All @@ -85,6 +96,7 @@ default void renderBreaking(BlockState state, BlockPos pos, BlockAndTintGetter w
* @param state The state.
* @return If you wish to render this block.
*/
@Deprecated // No replacement. Use a mixin.
default boolean canHandleEntity(BlockState state) {
return false;
}
Expand All @@ -101,6 +113,7 @@ default boolean canHandleEntity(BlockState state) {
* @param data Any ModelData.
* @param renderType The {@link RenderType} may be {@code null}.
*/
@Deprecated // No replacement. Use a mixin.
default void renderEntity(BlockState state, PoseStack nStack, MultiBufferSource builder, int packedLight, int packedOverlay, ModelData data, @Nullable RenderType renderType) { }
//endregion

Expand All @@ -115,6 +128,7 @@ default void renderEntity(BlockState state, PoseStack nStack, MultiBufferSource
* @param fluidState The {@link FluidState}.
* @return If you wish to render the {@link FluidState}.
*/
@Deprecated // No replacement. Use a mixin.
default boolean canHandleFluid(BlockAndTintGetter world, BlockPos pos, BlockState blockState, FluidState fluidState) {
return false;
}
Expand All @@ -131,6 +145,7 @@ default boolean canHandleFluid(BlockAndTintGetter world, BlockPos pos, BlockStat
* @param blockState The {@link BlockState}
* @param fluidState The {@link FluidState}
*/
@Deprecated // No replacement. Use a mixin.
default void renderFluid(BlockPos pos, BlockAndTintGetter world, VertexConsumer builder, BlockState blockState, FluidState fluidState) { }
//endregion
}
3 changes: 2 additions & 1 deletion src/main/resources/mixins.codechickenlib.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
"dev.GameNarratorMixin",
"ItemRendererMixin",
"MinecraftMixin",
"ShaderInstanceMixin"
"ShaderInstanceMixin",
"compat.EmbeddiumCCLMixin"
]
}