Original file line number Diff line number Diff line change
Expand Up @@ -10,40 +10,86 @@
import net.minecraft.client.renderer.entity.EntityRenderer;
import net.minecraft.network.chat.Component;
import net.minecraft.world.entity.Entity;
import net.minecraft.world.phys.AABB;

@Mixin(EntityRenderer.class)
public abstract class EntityRendererMixin<T extends Entity> implements EntityRendererInter<T> {

@Override
public boolean shadowShouldShowName(T entity) {
return shouldShowName(entity);
// spotless:off
//#if MC <= 12101
//$$ return shouldShowName(entity);
//#else
return ((EntityRenderer)(Object)this).createRenderState(entity, 0).nameTag != null;
//#endif
//spotless:on
}

@Override
public void shadowRenderNameTag(T entity, Component component, PoseStack poseStack,
MultiBufferSource multiBufferSource, int light, float f) {
renderNameTag(entity, component, poseStack, multiBufferSource, light
MultiBufferSource multiBufferSource, int light, float delta) {
// spotless:off
//#if MC >= 12005
, f);
//#else
//$$);
//#endif
//spotless:on
//#if MC >= 12102
renderNameTag(((EntityRenderer)(Object)this).createRenderState(entity, delta), component, poseStack, multiBufferSource, light);
//#elseif MC >= 12005
//$$ renderNameTag(entity, component, poseStack, multiBufferSource, light, delta);
//#else
//$$ renderNameTag(entity, component, poseStack, multiBufferSource, light);
//#endif
//spotless:on
}

// spotless:off
//#if MC <= 12101
//$$ @Shadow
//$$ public abstract boolean shouldShowName(T entity);
//#endif
//spotless:on

@Shadow
public abstract boolean shouldShowName(T entity);
// spotless:off
//#if MC >= 12102
public abstract void renderNameTag(net.minecraft.client.renderer.entity.state.EntityRenderState entityRenderState, Component component, PoseStack poseStack,
MultiBufferSource multiBufferSource, int i);
//#elseif MC >= 12005
//$$ public abstract void renderNameTag(T entity, Component component, PoseStack poseStack,
//$$ MultiBufferSource multiBufferSource, int i, float f);
//#else
//$$ public abstract void renderNameTag(T entity, Component component, PoseStack poseStack,
//$$ MultiBufferSource multiBufferSource, int i);
//#endif
//spotless:on

@Override
public boolean ignoresCulling(T entity) {
// spotless:off
//#if MC <= 12101
//$$ return entity.noCulling;
//#else
return !affectedByCulling(entity);
//#endif
//spotless:on
}

@Override
public AABB getCullingBox(T entity) {
// spotless:off
//#if MC <= 12101
//$$ return entity.getBoundingBoxForCulling();
//#else
return getBoundingBoxForCulling(entity);
//#endif
//spotless:on
}

// spotless:off
//#if MC >= 12102
@Shadow
public abstract void renderNameTag(T entity, Component component, PoseStack poseStack,
MultiBufferSource multiBufferSource, int i
// spotless:off
//#if MC >= 12005
, float f);
//#else
//$$);
//#endif
//spotless:on
abstract boolean affectedByCulling(T entity);
@Shadow
abstract AABB getBoundingBoxForCulling(T entity);
//#endif
//spotless:on

}
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
import com.mojang.blaze3d.vertex.PoseStack;

import dev.tr7zw.entityculling.EntityCullingModBase;
import dev.tr7zw.entityculling.NMSCullingHelper;
import dev.tr7zw.entityculling.access.EntityRendererInter;
import dev.tr7zw.entityculling.versionless.access.Cullable;
import net.minecraft.client.renderer.LevelRenderer;
Expand All @@ -32,17 +33,17 @@ private void renderEntity(Entity entity, double cameraX, double cameraY, double
return;
}
Cullable cullable = (Cullable) entity;
if (!cullable.isForcedVisible() && cullable.isCulled() && !entity.noCulling) {
if (!cullable.isForcedVisible() && cullable.isCulled() && !NMSCullingHelper.ignoresCulling(entity)) {
@SuppressWarnings("unchecked")
EntityRenderer<Entity> entityRenderer = (EntityRenderer<Entity>) entityRenderDispatcher.getRenderer(entity);
EntityRenderer entityRenderer = (EntityRenderer) entityRenderDispatcher.getRenderer(entity);
@SuppressWarnings("unchecked")
EntityRendererInter<Entity> entityRendererInter = (EntityRendererInter<Entity>) entityRenderer;
if (EntityCullingModBase.instance.config.renderNametagsThroughWalls && matrices != null
&& vertexConsumers != null && entityRendererInter.shadowShouldShowName(entity)) {
double x = Mth.lerp((double) tickDelta, (double) entity.xOld, (double) entity.getX()) - cameraX;
double y = Mth.lerp((double) tickDelta, (double) entity.yOld, (double) entity.getY()) - cameraY;
double z = Mth.lerp((double) tickDelta, (double) entity.zOld, (double) entity.getZ()) - cameraZ;
Vec3 vec3d = entityRenderer.getRenderOffset(entity, tickDelta);
Vec3 vec3d = NMSCullingHelper.getRenderOffset(entityRenderer, entity, tickDelta);
double d = x + vec3d.x;
double e = y + vec3d.y;
double f = z + vec3d.z;
Expand Down
4 changes: 4 additions & 0 deletions src/main/resources/assets/entityculling/lang/es_es.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
"text.entityculling.title": "EntityCulling",
"key.entityculling.toggle": "Cambiar a Modo Depuración"
}
2 changes: 1 addition & 1 deletion versions/mainProject
Original file line number Diff line number Diff line change
@@ -1 +1 @@
1.21-fabric
1.21.3-fabric