mirror of
https://github.com/Sollace/Unicopia.git
synced 2025-02-01 19:46:42 +01:00
Fixed butterflies and some cloud rendering
This commit is contained in:
parent
73d8a93da2
commit
10c4169742
8 changed files with 101 additions and 50 deletions
|
@ -10,7 +10,7 @@ import net.minecraft.client.util.math.MatrixStack;
|
|||
import net.minecraft.util.math.MathHelper;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
import com.minelittlepony.client.render.MagicGlow;
|
||||
import com.minelittlepony.unicopia.client.render.RenderLayers;
|
||||
import com.minelittlepony.unicopia.client.render.model.SphereModel;
|
||||
import com.minelittlepony.unicopia.magic.Caster;
|
||||
import com.minelittlepony.unicopia.particles.ParticleHandle.Attachment;
|
||||
|
@ -126,9 +126,9 @@ public class SphereParticle extends Particle implements Attachment {
|
|||
|
||||
float lerpedRad = MathHelper.lerp(tickDelta, prevRadius, radius);
|
||||
|
||||
model.render(matrices, lerpedRad + 0.1F, immediate.getBuffer(MagicGlow.getRenderLayer()), 1, 1, red, green, blue, alpha);
|
||||
|
||||
model.render(matrices, lerpedRad - 0.1F, immediate.getBuffer(MagicGlow.getRenderLayer()), 1, 1, red * 0.9F, green * 0.9F, blue * 0.9F, Math.min(1, alpha + 0.2F));
|
||||
VertexConsumer buffer = immediate.getBuffer(RenderLayers.magic());
|
||||
model.render(matrices, lerpedRad + 0.1F, buffer, 1, 1, red, green, blue, alpha);
|
||||
model.render(matrices, lerpedRad - 0.1F, buffer, 1, 1, red * 0.9F, green * 0.9F, blue * 0.9F, Math.min(1, alpha + 0.2F));
|
||||
|
||||
immediate.draw();
|
||||
|
||||
|
|
|
@ -5,12 +5,12 @@ import com.minelittlepony.unicopia.entity.ButterflyEntity;
|
|||
|
||||
import net.fabricmc.fabric.api.client.rendereregistry.v1.EntityRendererRegistry;
|
||||
import net.minecraft.client.render.entity.EntityRenderDispatcher;
|
||||
import net.minecraft.client.render.entity.LivingEntityRenderer;
|
||||
import net.minecraft.client.render.entity.MobEntityRenderer;
|
||||
import net.minecraft.client.util.math.MatrixStack;
|
||||
import net.minecraft.util.Identifier;
|
||||
import net.minecraft.util.math.MathHelper;
|
||||
|
||||
public class ButterflyEntityRenderer extends LivingEntityRenderer<ButterflyEntity, ButterflyEntityModel> {
|
||||
public class ButterflyEntityRenderer extends MobEntityRenderer<ButterflyEntity, ButterflyEntityModel> {
|
||||
|
||||
public ButterflyEntityRenderer(EntityRenderDispatcher manager, EntityRendererRegistry.Context context) {
|
||||
super(manager, new ButterflyEntityModel(), 0.25F);
|
||||
|
@ -22,17 +22,18 @@ public class ButterflyEntityRenderer extends LivingEntityRenderer<ButterflyEntit
|
|||
}
|
||||
|
||||
@Override
|
||||
protected void scale(ButterflyEntity entity, MatrixStack matrixStack, float ticks) {
|
||||
matrixStack.scale(0.35F, 0.35F, 0.35F);
|
||||
protected void scale(ButterflyEntity entity, MatrixStack matrices, float ticks) {
|
||||
matrices.scale(0.35F, 0.35F, 0.35F);
|
||||
matrices.translate(0.8F, 0, -0.5F);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void setupTransforms(ButterflyEntity entity, MatrixStack matrixStack, float age, float yaw, float ticks) {
|
||||
protected void setupTransforms(ButterflyEntity entity, MatrixStack matrices, float age, float yaw, float ticks) {
|
||||
|
||||
if (!entity.isResting()) {
|
||||
matrixStack.translate(0, MathHelper.cos(age / 3F) / 10F, 0);
|
||||
matrices.translate(0, MathHelper.cos(age / 3F) / 10F, 0);
|
||||
}
|
||||
|
||||
super.setupTransforms(entity, matrixStack, age, yaw, ticks);
|
||||
super.setupTransforms(entity, matrices, age, yaw, ticks);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3,18 +3,14 @@ package com.minelittlepony.unicopia.client.render;
|
|||
import net.fabricmc.fabric.api.client.rendereregistry.v1.EntityRendererRegistry;
|
||||
import net.minecraft.client.render.VertexConsumerProvider;
|
||||
import net.minecraft.client.render.entity.EntityRenderDispatcher;
|
||||
import net.minecraft.client.render.entity.LivingEntityRenderer;
|
||||
import net.minecraft.client.render.entity.MobEntityRenderer;
|
||||
import net.minecraft.client.util.math.MatrixStack;
|
||||
import net.minecraft.util.Identifier;
|
||||
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
import com.minelittlepony.unicopia.client.render.model.CloudEntityModel;
|
||||
import com.minelittlepony.unicopia.entity.CloudEntity;
|
||||
import com.minelittlepony.unicopia.util.WorldHelper;
|
||||
import com.mojang.blaze3d.platform.GlStateManager;
|
||||
|
||||
public class CloudEntityRenderer extends LivingEntityRenderer<CloudEntity, CloudEntityModel> {
|
||||
public class CloudEntityRenderer extends MobEntityRenderer<CloudEntity, CloudEntityModel> {
|
||||
private static final Identifier NORMAL = new Identifier("unicopia", "textures/entity/clouds.png");
|
||||
private static final Identifier RAINING = new Identifier("unicopia", "textures/entity/clouds_storm.png");
|
||||
|
||||
|
@ -32,28 +28,30 @@ public class CloudEntityRenderer extends LivingEntityRenderer<CloudEntity, Cloud
|
|||
@Override
|
||||
public void render(CloudEntity entity, float f, float g, MatrixStack matrixStack, VertexConsumerProvider vertexConsumerProvider, int i) {
|
||||
|
||||
if (!entity.removed) {
|
||||
if (entity.removed) {
|
||||
return;
|
||||
}
|
||||
|
||||
matrixStack.push();
|
||||
matrixStack.translate(0, -entity.getHeight()/entity.getCloudSize() + 0.3F, 0);
|
||||
|
||||
GlStateManager.disableLighting();
|
||||
GlStateManager.enableBlend();
|
||||
//GlStateManager.disableLighting();
|
||||
//GlStateManager.enableBlend();
|
||||
|
||||
float brightness = Math.max(WorldHelper.getDaylightBrightness(entity.getEntityWorld(), 0) * 3, 0.05F);
|
||||
//float brightness = Math.max(WorldHelper.getDaylightBrightness(entity.getEntityWorld(), 0) * 3, 0.05F);
|
||||
|
||||
GlStateManager.color4f(brightness, brightness, brightness, entity.getOpaque() ? 1 : 0.8F);
|
||||
//GlStateManager.color4f(brightness, brightness, brightness, entity.getOpaque() ? 1 : 0.8F);
|
||||
|
||||
GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
|
||||
//GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
|
||||
|
||||
super.render(entity, f, g, matrixStack, vertexConsumerProvider, i);
|
||||
|
||||
GlStateManager.disableBlend();
|
||||
GlStateManager.enableLighting();
|
||||
GlStateManager.color4f(1, 1, 1, 1);
|
||||
//GlStateManager.disableBlend();
|
||||
//GlStateManager.enableLighting();
|
||||
//GlStateManager.color4f(1, 1, 1, 1);
|
||||
|
||||
matrixStack.pop();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Identifier getTexture(CloudEntity entity) {
|
||||
|
|
|
@ -0,0 +1,51 @@
|
|||
package com.minelittlepony.unicopia.client.render;
|
||||
|
||||
import net.minecraft.client.render.RenderLayer;
|
||||
import net.minecraft.client.render.RenderPhase;
|
||||
import net.minecraft.client.render.VertexFormat;
|
||||
import net.minecraft.client.render.VertexFormats;
|
||||
import net.minecraft.util.Identifier;
|
||||
|
||||
public final class RenderLayers extends RenderLayer {
|
||||
|
||||
private RenderLayers(String name, VertexFormat vertexFormat, int drawMode, int expectedBufferSize,
|
||||
boolean hasCrumbling, boolean translucent, Runnable startAction, Runnable endAction) {
|
||||
super(name, vertexFormat, drawMode, expectedBufferSize, hasCrumbling, translucent, startAction, endAction);
|
||||
}
|
||||
|
||||
private static final RenderLayer MAGIC = RenderLayer.of("mlp_magic_glow", VertexFormats.POSITION_COLOR_TEXTURE_LIGHT_NORMAL, 7, 256, RenderLayer.MultiPhaseParameters.builder()
|
||||
.texture(NO_TEXTURE)
|
||||
.writeMaskState(COLOR_MASK)
|
||||
.transparency(LIGHTNING_TRANSPARENCY)
|
||||
.lightmap(DISABLE_LIGHTMAP)
|
||||
.cull(DISABLE_CULLING)
|
||||
.build(false));
|
||||
|
||||
public static RenderLayer entityNoLighting(Identifier tex) {
|
||||
return RenderLayer.of("entity_cutout_no_cull_no_lighting", VertexFormats.POSITION_COLOR_TEXTURE_OVERLAY_LIGHT_NORMAL, 7, 256, true, false, RenderLayer.MultiPhaseParameters.builder()
|
||||
.texture(new RenderPhase.Texture(tex, false, false))
|
||||
.transparency(RenderLayer.NO_TRANSPARENCY)
|
||||
.diffuseLighting(RenderLayer.ENABLE_DIFFUSE_LIGHTING)
|
||||
.alpha(RenderLayer.ONE_TENTH_ALPHA)
|
||||
.cull(RenderLayer.DISABLE_CULLING)
|
||||
.lightmap(RenderLayer.DISABLE_LIGHTMAP)
|
||||
.overlay(RenderLayer.ENABLE_OVERLAY_COLOR)
|
||||
.build(true));
|
||||
}
|
||||
|
||||
public static RenderLayer cloud(Identifier tex) {
|
||||
return RenderLayer.of("cloud", VertexFormats.POSITION_COLOR_TEXTURE_OVERLAY_LIGHT_NORMAL, 7, 256, true, false, RenderLayer.MultiPhaseParameters.builder()
|
||||
.texture(new RenderPhase.Texture(tex, false, false))
|
||||
.transparency(RenderLayer.TRANSLUCENT_TRANSPARENCY)
|
||||
.diffuseLighting(RenderLayer.ENABLE_DIFFUSE_LIGHTING)
|
||||
.alpha(RenderLayer.ONE_TENTH_ALPHA)
|
||||
.cull(RenderLayer.DISABLE_CULLING)
|
||||
.lightmap(RenderLayer.DISABLE_LIGHTMAP)
|
||||
.overlay(RenderLayer.ENABLE_OVERLAY_COLOR)
|
||||
.build(true));
|
||||
}
|
||||
|
||||
public static RenderLayer magic() {
|
||||
return MAGIC;
|
||||
}
|
||||
}
|
|
@ -1,8 +1,7 @@
|
|||
package com.minelittlepony.unicopia.client.render.model;
|
||||
|
||||
import com.minelittlepony.unicopia.client.render.RenderLayers;
|
||||
import com.minelittlepony.unicopia.entity.ButterflyEntity;
|
||||
import com.mojang.blaze3d.systems.RenderSystem;
|
||||
|
||||
import net.minecraft.client.model.ModelPart;
|
||||
import net.minecraft.client.render.VertexConsumer;
|
||||
import net.minecraft.client.render.entity.model.EntityModel;
|
||||
|
@ -20,6 +19,7 @@ public class ButterflyEntityModel extends EntityModel<ButterflyEntity> {
|
|||
private ModelPart rightWingOuter;
|
||||
|
||||
public ButterflyEntityModel() {
|
||||
super(RenderLayers::entityNoLighting);
|
||||
textureWidth = 64;
|
||||
textureHeight = 64;
|
||||
|
||||
|
@ -58,9 +58,7 @@ public class ButterflyEntityModel extends EntityModel<ButterflyEntity> {
|
|||
|
||||
@Override
|
||||
public void render(MatrixStack matrices, VertexConsumer vertexConsumer, int light, int overlay, float red, float green, float blue, float alpha) {
|
||||
RenderSystem.disableLighting();
|
||||
body.render(matrices, vertexConsumer, light, overlay, red, green, blue, alpha);
|
||||
RenderSystem.enableLighting();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -1,16 +1,19 @@
|
|||
package com.minelittlepony.unicopia.client.render.model;
|
||||
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import com.minelittlepony.unicopia.client.render.RenderLayers;
|
||||
import com.minelittlepony.unicopia.entity.CloudEntity;
|
||||
|
||||
import net.minecraft.client.model.ModelPart;
|
||||
import net.minecraft.client.render.entity.model.CompositeEntityModel;
|
||||
import net.minecraft.client.render.VertexConsumer;
|
||||
import net.minecraft.client.render.entity.model.EntityModel;
|
||||
import net.minecraft.client.util.math.MatrixStack;
|
||||
|
||||
public class CloudEntityModel extends CompositeEntityModel<CloudEntity> {
|
||||
public class CloudEntityModel extends EntityModel<CloudEntity> {
|
||||
|
||||
private final ModelPart body;
|
||||
|
||||
public CloudEntityModel() {
|
||||
super(RenderLayers::cloud);
|
||||
body = new ModelPart(this, 0, 0);
|
||||
body.setTextureSize(250, 90);
|
||||
|
||||
|
@ -27,8 +30,8 @@ public class CloudEntityModel extends CompositeEntityModel<CloudEntity> {
|
|||
}
|
||||
|
||||
@Override
|
||||
public Iterable<ModelPart> getParts() {
|
||||
return ImmutableList.of(body);
|
||||
public void render(MatrixStack matrices, VertexConsumer vertexConsumer, int light, int overlay, float red, float green, float blue, float alpha) {
|
||||
body.render(matrices, vertexConsumer, light, overlay, red, green, blue, alpha);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -74,7 +74,7 @@ public class ButterflyEntity extends AmbientEntity {
|
|||
|
||||
@Override
|
||||
public boolean collides() {
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -82,7 +82,7 @@ public class ButterflyEntity extends AmbientEntity {
|
|||
super.tick();
|
||||
|
||||
Vec3d vel = getVelocity();
|
||||
setVelocity(vel.x, getY() * 0.6, vel.z);
|
||||
setVelocity(vel.x, vel.y * 0.6 + 0.02F, vel.z);
|
||||
}
|
||||
|
||||
public boolean isResting() {
|
||||
|
@ -199,7 +199,7 @@ public class ButterflyEntity extends AmbientEntity {
|
|||
}
|
||||
|
||||
@Override
|
||||
public float getEyeHeight(EntityPose pos) {
|
||||
public float getEyeHeight(EntityPose pose) {
|
||||
return getHeight() / 2;
|
||||
}
|
||||
|
||||
|
|
|
@ -29,7 +29,7 @@ public interface UEntities {
|
|||
|
||||
EntityType<CuccoonEntity> CUCCOON = register("cuccoon", FabricEntityTypeBuilder.create(EntityCategory.MISC, CuccoonEntity::new).size(EntityDimensions.changing(1.5F, 1.6F)));
|
||||
|
||||
EntityType<ButterflyEntity> BUTTERFLY = register("butterfly", FabricEntityTypeBuilder.create(EntityCategory.AMBIENT, ButterflyEntity::new));
|
||||
EntityType<ButterflyEntity> BUTTERFLY = register("butterfly", FabricEntityTypeBuilder.create(EntityCategory.AMBIENT, ButterflyEntity::new).size(EntityDimensions.fixed(1, 1)));
|
||||
|
||||
EntityType<ProjectileEntity> THROWN_ITEM = register("thrown_item", FabricEntityTypeBuilder.<ProjectileEntity>create(EntityCategory.MISC, ProjectileEntity::new).trackable(100, 2));
|
||||
EntityType<SpearEntity> THROWN_SPEAR = register("thrown_spear", FabricEntityTypeBuilder.<SpearEntity>create(EntityCategory.MISC, SpearEntity::new).trackable(100, 2));
|
||||
|
|
Loading…
Reference in a new issue