Inspired by 2020's April Fools' 20w14infinite Snapshot, this mod brings endless randomly generated dimensions into Minecraft.
at master 116 lines 5.4 kB view raw
1package net.lerariemann.infinity.entity.client; 2 3import com.mojang.blaze3d.vertex.PoseStack; 4import com.mojang.blaze3d.vertex.VertexConsumer; 5import net.lerariemann.infinity.entity.custom.TintableEntity; 6import net.lerariemann.infinity.util.InfinityMethods; 7import net.minecraft.client.Minecraft; 8import net.minecraft.client.model.EntityModel; 9import net.minecraft.client.renderer.MultiBufferSource; 10import net.minecraft.client.renderer.RenderType; 11//? if >1.21.9 { 12/*import net.minecraft.client.renderer.SubmitNodeCollector; 13*///?} 14import net.minecraft.client.renderer.entity.LivingEntityRenderer; 15import net.minecraft.client.renderer.entity.RenderLayerParent; 16import net.minecraft.client.renderer.entity.layers.RenderLayer; 17//? if <1.21.2 { 18/*import net.minecraft.util.FastColor; 19*///?} else { 20import net.minecraft.client.renderer.entity.state.LivingEntityRenderState; 21import net.minecraft.util.ARGB; 22//?} 23import net.minecraft.resources.ResourceLocation; 24import net.minecraft.world.entity.Mob; 25 26public class TintedLayerRenderer<T extends 27 //? if >1.21.2 { 28 LivingEntityRenderState 29 //?} else { 30 /*Mob 31 *///?} 32 , S extends EntityModel<T>> extends RenderLayer<T, S> { 33 private final S model; 34 35 public TintedLayerRenderer(RenderLayerParent<T, S> context, S model) { 36 super(context); 37 this.model = model; 38 } 39 40 //? if >1.21.9 { 41 42 /*@Override 43 public void submit(PoseStack matrixStack, SubmitNodeCollector nodeCollector, int packedLight, T renderState, float yRot, float xRot) { 44 boolean bl = renderState.appearsGlowing() && renderState.isInvisible; 45 if (renderState.isInvisible && !bl) { 46 return; 47 } 48 49 // TODO 1.21.10 find a better way of extracting a texture from a render state 50 ResourceLocation texture; 51 if (renderState instanceof ChaosPawnRenderState) { 52 texture = InfinityMethods.getId("textures/entity/empty.png"); 53 } else if (renderState instanceof ChaosSlimeRenderState) { 54 texture = InfinityMethods.getId("textures/entity/slime.png"); 55 } else { 56 texture = InfinityMethods.getId("textures/entity/empty.png"); 57 } 58 59// (this.getParentModel()).copyTransforms(this.model); 60 this.model.setupAnim(renderState); 61 int color = 16777215; 62 if (renderState instanceof TintableEntity ent) { 63 color = ent.getColorForRender(); 64 } 65 nodeCollector.submitModel(model, renderState, matrixStack, RenderType.outline(texture), packedLight, LivingEntityRenderer.getOverlayCoords(renderState, 0.0f), color, null, renderState.outlineColor, null); 66 } 67 *///?} else if >1.21.2 { 68 // public void render(MatrixStack matrixStack, VertexConsumerProvider vertexConsumerProvider, int i, T livingEntity, float f, float g, float h, float j, float k, float l) { 69 @Override 70 public void render(PoseStack matrixStack, MultiBufferSource vertexConsumerProvider, int light, T livingEntity, float limbAngle, float limbDistance) { 71 boolean bl = livingEntity.appearsGlowing && livingEntity.isInvisible; 72 float a = 1f; 73 if (livingEntity.isInvisible && !bl) { 74 return; 75 } 76 ResourceLocation texture; 77 if (livingEntity instanceof TintedRenderState state) { 78 texture = state.getTexture(); 79 a = state.getAlpha(); 80 } 81 else { 82 texture = InfinityMethods.getId("textures/entity/empty.png"); 83 } 84 VertexConsumer vertexConsumer = vertexConsumerProvider.getBuffer(bl ? 85 RenderType.outline(texture) : RenderType.entityTranslucent(texture)); 86 this.model.setupAnim(livingEntity); 87 int color = 16777215; 88 if (livingEntity instanceof TintedRenderState ent) { 89 color = ent.getColour(); 90 } 91 this.model.renderToBuffer(matrixStack, vertexConsumer, light, LivingEntityRenderer.getOverlayCoords(livingEntity, 0.0f), ARGB.color(a, color)); 92 } 93 94 //?} else { 95 /*@Override 96 public void render(PoseStack matrixStack, MultiBufferSource vertexConsumerProvider, int i, T livingEntity, float f, float g, float h, float j, float k, float l) { 97 boolean bl = Minecraft.getInstance().shouldEntityAppearGlowing(livingEntity) && livingEntity.isInvisible(); 98 if (livingEntity.isInvisible() && !bl) { 99 return; 100 } 101 VertexConsumer vertexConsumer = bl ? vertexConsumerProvider.getBuffer(RenderType.outline(this.getTextureLocation(livingEntity))) : vertexConsumerProvider.getBuffer(RenderType.entityTranslucent(this.getTextureLocation(livingEntity))); 102 (this.getParentModel()).copyPropertiesTo(this.model); 103 this.model.prepareMobModel(livingEntity, f, g, h); 104 this.model.setupAnim(livingEntity, f, g, j, k, l); 105 int color = 16777215; 106 if (livingEntity instanceof TintableEntity ent) { 107 color = ent.getColorForRender(); 108 } 109 //? if >1.21 { 110 this.model.renderToBuffer(matrixStack, vertexConsumer, i, LivingEntityRenderer.getOverlayCoords(livingEntity, 0.0f), color); 111 //?} else { 112 /^this.model.renderToBuffer(matrixStack, vertexConsumer, i, LivingEntityRenderer.getOverlayCoords(livingEntity, 0.0f), FastColor.ARGB32.red(color), FastColor.ARGB32.green(color), FastColor.ARGB32.blue(color), 1.0f); 113 ^///?} 114 } 115 *///?} 116}