mirror of
https://github.com/Pridecraft-Studios/joy.git
synced 2025-09-09 12:06:32 -04:00
PrideSlime -> 🪦
This commit is contained in:
parent
00684d6d93
commit
83f7e43017
@ -60,7 +60,6 @@ public class JoyClient implements ClientModInitializer {
|
||||
EntityRendererRegistry.register(ModEntities.TREE, TreeRenderer::new);
|
||||
EntityRendererRegistry.register(ModEntities.AXOLOTL, AxolotlRenderer::new);
|
||||
EntityRendererRegistry.register(ModEntities.FROG, FrogRenderer::new);
|
||||
EntityRendererRegistry.register(ModEntities.PRIDE_SLIME, PrideSlimeRenderer::new);
|
||||
EntityRendererRegistry.register(ModEntities.PRIDE_SNIFFER, PrideSnifferRenderer::new);
|
||||
}
|
||||
}
|
||||
|
@ -1,46 +0,0 @@
|
||||
package gay.pridecraft.joy.renderer.entity;
|
||||
|
||||
import gay.pridecraft.joy.Joy;
|
||||
import gay.pridecraft.joy.entity.custom.living.CustomSlimeEntity;
|
||||
import gay.pridecraft.joy.renderer.feature.PrideSlimeOverlayFeatureRenderer;
|
||||
import gay.pridecraft.joy.renderer.model.PrideSlimeEntityModel;
|
||||
import net.fabricmc.api.EnvType;
|
||||
import net.fabricmc.api.Environment;
|
||||
import net.minecraft.client.render.VertexConsumerProvider;
|
||||
import net.minecraft.client.render.entity.EntityRendererFactory;
|
||||
import net.minecraft.client.render.entity.MobEntityRenderer;
|
||||
import net.minecraft.client.render.entity.model.EntityModelLayers;
|
||||
import net.minecraft.client.util.math.MatrixStack;
|
||||
import net.minecraft.util.Identifier;
|
||||
import net.minecraft.util.math.MathHelper;
|
||||
|
||||
@Environment(EnvType.CLIENT)
|
||||
public class PrideSlimeRenderer extends MobEntityRenderer<CustomSlimeEntity.PrideSlimeEntity, PrideSlimeEntityModel<CustomSlimeEntity.PrideSlimeEntity>> {
|
||||
private static final Identifier TEXTURE = Identifier.of(Joy.MOD_ID, "textures/entity/slime/pride_slime.png");
|
||||
|
||||
public PrideSlimeRenderer(EntityRendererFactory.Context context) {
|
||||
super(context, new PrideSlimeEntityModel<>(context.getPart(EntityModelLayers.SLIME)), 0.25F);
|
||||
this.addFeature(new PrideSlimeOverlayFeatureRenderer<>(this, context.getModelLoader()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public Identifier getTexture(CustomSlimeEntity.PrideSlimeEntity entity) {
|
||||
return TEXTURE;
|
||||
}
|
||||
|
||||
public void render(CustomSlimeEntity.PrideSlimeEntity slimeEntity, float f, float g, MatrixStack matrixStack, VertexConsumerProvider vertexConsumerProvider, int i) {
|
||||
this.shadowRadius = 0.25F * (float)slimeEntity.getSize();
|
||||
super.render(slimeEntity, f, g, matrixStack, vertexConsumerProvider, i);
|
||||
}
|
||||
|
||||
protected void scale(CustomSlimeEntity.PrideSlimeEntity slimeEntity, MatrixStack matrixStack, float f) {
|
||||
float g = 0.999F;
|
||||
matrixStack.scale(0.999F, 0.999F, 0.999F);
|
||||
matrixStack.translate(0.0F, 0.001F, 0.0F);
|
||||
float h = (float) slimeEntity.getSize();
|
||||
float i = MathHelper.lerp(f, slimeEntity.lastStretch, slimeEntity.stretch) / (h * 0.5F + 1.0F);
|
||||
float j = 1.0F / (i + 1.0F);
|
||||
matrixStack.scale(j * h, 1.0F / j * h, j * h);
|
||||
}
|
||||
}
|
||||
|
@ -1,47 +0,0 @@
|
||||
package gay.pridecraft.joy.renderer.feature;
|
||||
|
||||
import gay.pridecraft.joy.renderer.model.PrideSlimeEntityModel;
|
||||
import net.fabricmc.api.EnvType;
|
||||
import net.fabricmc.api.Environment;
|
||||
import net.minecraft.client.MinecraftClient;
|
||||
import net.minecraft.client.render.RenderLayer;
|
||||
import net.minecraft.client.render.VertexConsumer;
|
||||
import net.minecraft.client.render.VertexConsumerProvider;
|
||||
import net.minecraft.client.render.entity.LivingEntityRenderer;
|
||||
import net.minecraft.client.render.entity.feature.FeatureRenderer;
|
||||
import net.minecraft.client.render.entity.feature.FeatureRendererContext;
|
||||
import net.minecraft.client.render.entity.model.EntityModel;
|
||||
import net.minecraft.client.render.entity.model.EntityModelLayers;
|
||||
import net.minecraft.client.render.entity.model.EntityModelLoader;
|
||||
import net.minecraft.client.util.math.MatrixStack;
|
||||
import net.minecraft.entity.LivingEntity;
|
||||
|
||||
@Environment(EnvType.CLIENT)
|
||||
public class PrideSlimeOverlayFeatureRenderer<T extends LivingEntity> extends FeatureRenderer<T, PrideSlimeEntityModel<T>> {
|
||||
private final EntityModel<T> model;
|
||||
|
||||
public PrideSlimeOverlayFeatureRenderer(FeatureRendererContext<T, PrideSlimeEntityModel<T>> context, EntityModelLoader loader) {
|
||||
super(context);
|
||||
this.model = new PrideSlimeEntityModel<>(loader.getModelPart(EntityModelLayers.SLIME_OUTER));
|
||||
}
|
||||
|
||||
public void render(
|
||||
MatrixStack matrixStack, VertexConsumerProvider vertexConsumerProvider, int i, T livingEntity, float f, float g, float h, float j, float k, float l
|
||||
) {
|
||||
MinecraftClient minecraftClient = MinecraftClient.getInstance();
|
||||
boolean bl = minecraftClient.hasOutline(livingEntity) && livingEntity.isInvisible();
|
||||
if (!livingEntity.isInvisible() || bl) {
|
||||
VertexConsumer vertexConsumer;
|
||||
if (bl) {
|
||||
vertexConsumer = vertexConsumerProvider.getBuffer(RenderLayer.getOutline(this.getTexture(livingEntity)));
|
||||
} else {
|
||||
vertexConsumer = vertexConsumerProvider.getBuffer(RenderLayer.getEntityTranslucent(this.getTexture(livingEntity)));
|
||||
}
|
||||
|
||||
this.getContextModel().copyStateTo(this.model);
|
||||
this.model.animateModel(livingEntity, f, g, h);
|
||||
this.model.setAngles(livingEntity, f, g, j, k, l);
|
||||
this.model.render(matrixStack, vertexConsumer, i, LivingEntityRenderer.getOverlay(livingEntity, 0.0F));
|
||||
}
|
||||
}
|
||||
}
|
@ -1,47 +0,0 @@
|
||||
package gay.pridecraft.joy.renderer.model;
|
||||
|
||||
import net.minecraft.client.render.entity.model.SinglePartEntityModel;
|
||||
|
||||
import net.fabricmc.api.EnvType;
|
||||
import net.fabricmc.api.Environment;
|
||||
import net.minecraft.client.model.ModelData;
|
||||
import net.minecraft.client.model.ModelPart;
|
||||
import net.minecraft.client.model.ModelPartBuilder;
|
||||
import net.minecraft.client.model.ModelPartData;
|
||||
import net.minecraft.client.model.ModelTransform;
|
||||
import net.minecraft.client.model.TexturedModelData;
|
||||
import net.minecraft.entity.Entity;
|
||||
|
||||
@Environment(EnvType.CLIENT)
|
||||
public class PrideSlimeEntityModel<T extends Entity> extends SinglePartEntityModel<T> {
|
||||
private final ModelPart root;
|
||||
|
||||
public PrideSlimeEntityModel(ModelPart root) {
|
||||
this.root = root;
|
||||
}
|
||||
|
||||
public static TexturedModelData getOuterTexturedModelData() {
|
||||
ModelData modelData = new ModelData();
|
||||
ModelPartData modelPartData = modelData.getRoot();
|
||||
modelPartData.addChild("cube", ModelPartBuilder.create().uv(0, 0).cuboid(-4.0F, 16.0F, -4.0F, 8.0F, 8.0F, 8.0F), ModelTransform.NONE);
|
||||
return TexturedModelData.of(modelData, 64, 32);
|
||||
}
|
||||
|
||||
public static TexturedModelData getInnerTexturedModelData() {
|
||||
ModelData modelData = new ModelData();
|
||||
ModelPartData modelPartData = modelData.getRoot();
|
||||
modelPartData.addChild("cube", ModelPartBuilder.create().uv(0, 16).cuboid(-3.0F, 17.0F, -3.0F, 6.0F, 6.0F, 6.0F), ModelTransform.NONE);
|
||||
modelPartData.addChild("right_eye", ModelPartBuilder.create().uv(32, 0).cuboid(-3.25F, 18.0F, -3.5F, 2.0F, 2.0F, 2.0F), ModelTransform.NONE);
|
||||
modelPartData.addChild("left_eye", ModelPartBuilder.create().uv(32, 4).cuboid(1.25F, 18.0F, -3.5F, 2.0F, 2.0F, 2.0F), ModelTransform.NONE);
|
||||
modelPartData.addChild("mouth", ModelPartBuilder.create().uv(32, 8).cuboid(0.0F, 21.0F, -3.5F, 1.0F, 1.0F, 1.0F), ModelTransform.NONE);
|
||||
return TexturedModelData.of(modelData, 64, 32);
|
||||
}
|
||||
|
||||
public void setAngles(T entity, float limbAngle, float limbDistance, float animationProgress, float headYaw, float headPitch) {
|
||||
}
|
||||
|
||||
public ModelPart getPart() {
|
||||
return this.root;
|
||||
}
|
||||
}
|
||||
|
Binary file not shown.
Before Width: | Height: | Size: 3.6 KiB |
Loading…
x
Reference in New Issue
Block a user