End fish prototype
This commit is contained in:
parent
df8e285757
commit
4237f5bdca
12 changed files with 152 additions and 11 deletions
|
@ -22,7 +22,6 @@ import net.minecraft.world.World;
|
||||||
import net.minecraft.world.WorldAccess;
|
import net.minecraft.world.WorldAccess;
|
||||||
import net.minecraft.world.dimension.DimensionType;
|
import net.minecraft.world.dimension.DimensionType;
|
||||||
import net.minecraft.world.gen.feature.ConfiguredFeatures;
|
import net.minecraft.world.gen.feature.ConfiguredFeatures;
|
||||||
|
|
||||||
import ru.betterend.client.ERenderLayer;
|
import ru.betterend.client.ERenderLayer;
|
||||||
import ru.betterend.client.IRenderTypeable;
|
import ru.betterend.client.IRenderTypeable;
|
||||||
import ru.betterend.interfaces.TeleportingEntity;
|
import ru.betterend.interfaces.TeleportingEntity;
|
||||||
|
|
13
src/main/java/ru/betterend/entity/BlockBenchModel.java
Normal file
13
src/main/java/ru/betterend/entity/BlockBenchModel.java
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
package ru.betterend.entity;
|
||||||
|
|
||||||
|
import net.minecraft.client.model.ModelPart;
|
||||||
|
import net.minecraft.client.render.entity.model.EntityModel;
|
||||||
|
import net.minecraft.entity.Entity;
|
||||||
|
|
||||||
|
public abstract class BlockBenchModel<T extends Entity> extends EntityModel<T> {
|
||||||
|
protected void setRotationAngle(ModelPart modelRenderer, float x, float y, float z) {
|
||||||
|
modelRenderer.pitch = x;
|
||||||
|
modelRenderer.yaw = y;
|
||||||
|
modelRenderer.roll = z;
|
||||||
|
}
|
||||||
|
}
|
33
src/main/java/ru/betterend/entity/EntityEndFish.java
Normal file
33
src/main/java/ru/betterend/entity/EntityEndFish.java
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
package ru.betterend.entity;
|
||||||
|
|
||||||
|
import net.minecraft.entity.EntityType;
|
||||||
|
import net.minecraft.entity.LivingEntity;
|
||||||
|
import net.minecraft.entity.attribute.DefaultAttributeContainer;
|
||||||
|
import net.minecraft.entity.attribute.EntityAttributes;
|
||||||
|
import net.minecraft.entity.passive.SchoolingFishEntity;
|
||||||
|
import net.minecraft.item.ItemStack;
|
||||||
|
import net.minecraft.sound.SoundEvent;
|
||||||
|
import net.minecraft.world.World;
|
||||||
|
|
||||||
|
public class EntityEndFish extends SchoolingFishEntity {
|
||||||
|
public EntityEndFish(EntityType<EntityEndFish> entityType, World world) {
|
||||||
|
super(entityType, world);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected ItemStack getFishBucketItem() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected SoundEvent getFlopSound() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static DefaultAttributeContainer.Builder createMobAttributes() {
|
||||||
|
return LivingEntity.createLivingAttributes()
|
||||||
|
.add(EntityAttributes.GENERIC_MAX_HEALTH, 2.0D)
|
||||||
|
.add(EntityAttributes.GENERIC_FOLLOW_RANGE, 16.0D)
|
||||||
|
.add(EntityAttributes.GENERIC_MOVEMENT_SPEED, 0.5D);
|
||||||
|
}
|
||||||
|
}
|
|
@ -2,11 +2,11 @@ package ru.betterend.entity.model;
|
||||||
|
|
||||||
import net.minecraft.client.model.ModelPart;
|
import net.minecraft.client.model.ModelPart;
|
||||||
import net.minecraft.client.render.VertexConsumer;
|
import net.minecraft.client.render.VertexConsumer;
|
||||||
import net.minecraft.client.render.entity.model.EntityModel;
|
|
||||||
import net.minecraft.client.util.math.MatrixStack;
|
import net.minecraft.client.util.math.MatrixStack;
|
||||||
|
import ru.betterend.entity.BlockBenchModel;
|
||||||
import ru.betterend.entity.EntityDragonfly;
|
import ru.betterend.entity.EntityDragonfly;
|
||||||
|
|
||||||
public class ModelEntityDragonfly extends EntityModel<EntityDragonfly> {
|
public class ModelEntityDragonfly extends BlockBenchModel<EntityDragonfly> {
|
||||||
private final ModelPart model;
|
private final ModelPart model;
|
||||||
private final ModelPart head;
|
private final ModelPart head;
|
||||||
private final ModelPart tail;
|
private final ModelPart tail;
|
||||||
|
@ -99,10 +99,4 @@ public class ModelEntityDragonfly extends EntityModel<EntityDragonfly> {
|
||||||
public void render(MatrixStack matrices, VertexConsumer vertices, int light, int overlay, float red, float green, float blue, float alpha) {
|
public void render(MatrixStack matrices, VertexConsumer vertices, int light, int overlay, float red, float green, float blue, float alpha) {
|
||||||
model.render(matrices, vertices, light, overlay);
|
model.render(matrices, vertices, light, overlay);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setRotationAngle(ModelPart modelRenderer, float x, float y, float z) {
|
|
||||||
modelRenderer.pitch = x;
|
|
||||||
modelRenderer.yaw = y;
|
|
||||||
modelRenderer.roll = z;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,70 @@
|
||||||
|
package ru.betterend.entity.model;
|
||||||
|
|
||||||
|
import com.mojang.blaze3d.systems.RenderSystem;
|
||||||
|
|
||||||
|
import net.minecraft.client.model.ModelPart;
|
||||||
|
import net.minecraft.client.render.VertexConsumer;
|
||||||
|
import net.minecraft.client.util.math.MatrixStack;
|
||||||
|
import ru.betterend.entity.BlockBenchModel;
|
||||||
|
import ru.betterend.entity.EntityEndFish;
|
||||||
|
|
||||||
|
public class ModelEntityEndFish extends BlockBenchModel<EntityEndFish> {
|
||||||
|
private final ModelPart model;
|
||||||
|
private final ModelPart fin_top;
|
||||||
|
private final ModelPart fin_bottom;
|
||||||
|
private final ModelPart flipper;
|
||||||
|
private final ModelPart fin_right;
|
||||||
|
private final ModelPart fin_left;
|
||||||
|
|
||||||
|
public ModelEntityEndFish() {
|
||||||
|
textureWidth = 32;
|
||||||
|
textureHeight = 32;
|
||||||
|
|
||||||
|
model = new ModelPart(this);
|
||||||
|
model.setPivot(0.0F, 20.0F, 0.0F);
|
||||||
|
model.setTextureOffset(0, 0).addCuboid(-1.0F, -2.0F, -4.0F, 2.0F, 4.0F, 8.0F, 0.0F);
|
||||||
|
|
||||||
|
fin_top = new ModelPart(this);
|
||||||
|
fin_top.setPivot(0.0F, -2.0F, -4.0F);
|
||||||
|
model.addChild(fin_top);
|
||||||
|
setRotationAngle(fin_top, -0.6981F, 0.0F, 0.0F);
|
||||||
|
fin_top.setTextureOffset(0, 6).addCuboid(0.0F, -8.0F, 0.0F, 0.0F, 8.0F, 6.0F, 0.0F);
|
||||||
|
|
||||||
|
fin_bottom = new ModelPart(this);
|
||||||
|
fin_bottom.setPivot(0.0F, 2.0F, -4.0F);
|
||||||
|
model.addChild(fin_bottom);
|
||||||
|
setRotationAngle(fin_bottom, 0.6981F, 0.0F, 0.0F);
|
||||||
|
fin_bottom.setTextureOffset(0, 6).addCuboid(0.0F, 0.0F, 0.0F, 0.0F, 8.0F, 6.0F, 0.0F);
|
||||||
|
|
||||||
|
flipper = new ModelPart(this);
|
||||||
|
flipper.setPivot(0.0F, 0.0F, 2.0F);
|
||||||
|
model.addChild(flipper);
|
||||||
|
setRotationAngle(flipper, -0.7854F, 0.0F, 0.0F);
|
||||||
|
flipper.setTextureOffset(0, 15).addCuboid(0.0F, -5.0F, 0.0F, 0.0F, 5.0F, 5.0F, 0.0F);
|
||||||
|
|
||||||
|
fin_right = new ModelPart(this);
|
||||||
|
fin_right.setPivot(-1.0F, 0.0F, -1.0F);
|
||||||
|
model.addChild(fin_right);
|
||||||
|
setRotationAngle(fin_right, 1.5708F, 0.7854F, 0.0F);
|
||||||
|
fin_right.setTextureOffset(0, 25).addCuboid(-3.7071F, 0.7071F, -1.5F, 3.0F, 0.0F, 3.0F, 0.0F);
|
||||||
|
|
||||||
|
fin_left = new ModelPart(this);
|
||||||
|
fin_left.setPivot(1.0F, 0.0F, -1.0F);
|
||||||
|
model.addChild(fin_left);
|
||||||
|
setRotationAngle(fin_left, 1.5708F, -0.7854F, 0.0F);
|
||||||
|
fin_left.setTextureOffset(0, 25).addCuboid(0.7071F, 0.7071F, -1.5F, 3.0F, 0.0F, 3.0F, 0.0F, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setAngles(EntityEndFish entity, float limbAngle, float limbDistance, float animationProgress, float headYaw, float headPitch) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void render(MatrixStack matrices, VertexConsumer vertices, int light, int overlay, float red, float green, float blue, float alpha) {
|
||||||
|
RenderSystem.enableCull();
|
||||||
|
model.render(matrices, vertices, light, overlay);
|
||||||
|
RenderSystem.disableCull();
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,30 @@
|
||||||
|
package ru.betterend.entity.render;
|
||||||
|
|
||||||
|
import net.minecraft.client.render.RenderLayer;
|
||||||
|
import net.minecraft.client.render.entity.EntityRenderDispatcher;
|
||||||
|
import net.minecraft.client.render.entity.MobEntityRenderer;
|
||||||
|
import net.minecraft.client.render.entity.feature.EyesFeatureRenderer;
|
||||||
|
import net.minecraft.util.Identifier;
|
||||||
|
import ru.betterend.BetterEnd;
|
||||||
|
import ru.betterend.entity.EntityEndFish;
|
||||||
|
import ru.betterend.entity.model.ModelEntityEndFish;
|
||||||
|
|
||||||
|
public class RendererEntityEndFish extends MobEntityRenderer<EntityEndFish, ModelEntityEndFish> {
|
||||||
|
private static final Identifier TEXTURE = BetterEnd.makeID("textures/entity/end_fish/end_fish_2.png");
|
||||||
|
private static final RenderLayer GLOW = RenderLayer.getEyes(BetterEnd.makeID("textures/entity/end_fish/end_fish_2_glow.png"));
|
||||||
|
|
||||||
|
public RendererEntityEndFish(EntityRenderDispatcher entityRenderDispatcher) {
|
||||||
|
super(entityRenderDispatcher, new ModelEntityEndFish(), 0.5f);
|
||||||
|
this.addFeature(new EyesFeatureRenderer<EntityEndFish, ModelEntityEndFish>(this) {
|
||||||
|
@Override
|
||||||
|
public RenderLayer getEyesTexture() {
|
||||||
|
return GLOW;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Identifier getTexture(EntityEndFish entity) {
|
||||||
|
return TEXTURE;
|
||||||
|
}
|
||||||
|
}
|
|
@ -7,7 +7,6 @@ import net.minecraft.server.world.ServerWorld;
|
||||||
import net.minecraft.util.ActionResult;
|
import net.minecraft.util.ActionResult;
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
|
|
||||||
import ru.betterend.blocks.RunedFlavolite;
|
import ru.betterend.blocks.RunedFlavolite;
|
||||||
import ru.betterend.registry.ItemRegistry;
|
import ru.betterend.registry.ItemRegistry;
|
||||||
import ru.betterend.util.PortalFrameHelper;
|
import ru.betterend.util.PortalFrameHelper;
|
||||||
|
|
|
@ -7,7 +7,6 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||||
|
|
||||||
import net.minecraft.server.network.ServerPlayerEntity;
|
import net.minecraft.server.network.ServerPlayerEntity;
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
|
|
||||||
import ru.betterend.interfaces.TeleportingEntity;
|
import ru.betterend.interfaces.TeleportingEntity;
|
||||||
|
|
||||||
@Mixin(ServerPlayerEntity.class)
|
@Mixin(ServerPlayerEntity.class)
|
||||||
|
|
|
@ -12,6 +12,7 @@ import net.minecraft.entity.attribute.DefaultAttributeContainer.Builder;
|
||||||
import net.minecraft.util.registry.Registry;
|
import net.minecraft.util.registry.Registry;
|
||||||
import ru.betterend.BetterEnd;
|
import ru.betterend.BetterEnd;
|
||||||
import ru.betterend.entity.EntityDragonfly;
|
import ru.betterend.entity.EntityDragonfly;
|
||||||
|
import ru.betterend.entity.EntityEndFish;
|
||||||
import ru.betterend.entity.EntityEndSlime;
|
import ru.betterend.entity.EntityEndSlime;
|
||||||
import ru.betterend.util.MHelper;
|
import ru.betterend.util.MHelper;
|
||||||
import ru.betterend.util.SpawnHelper;
|
import ru.betterend.util.SpawnHelper;
|
||||||
|
@ -19,6 +20,7 @@ import ru.betterend.util.SpawnHelper;
|
||||||
public class EntityRegistry {
|
public class EntityRegistry {
|
||||||
public static final EntityType<EntityDragonfly> DRAGONFLY = register("dragonfly", SpawnGroup.AMBIENT, 0.6F, 0.5F, EntityDragonfly::new, EntityDragonfly.createMobAttributes(), true, MHelper.color(32, 42, 176), MHelper.color(115, 225, 249));
|
public static final EntityType<EntityDragonfly> DRAGONFLY = register("dragonfly", SpawnGroup.AMBIENT, 0.6F, 0.5F, EntityDragonfly::new, EntityDragonfly.createMobAttributes(), true, MHelper.color(32, 42, 176), MHelper.color(115, 225, 249));
|
||||||
public static final EntityType<EntityEndSlime> END_SLIME = register("end_slime", SpawnGroup.MONSTER, 2F, 2F, EntityEndSlime::new, EntityEndSlime.createMobAttributes(), false, MHelper.color(28, 28, 28), MHelper.color(99, 11, 99));
|
public static final EntityType<EntityEndSlime> END_SLIME = register("end_slime", SpawnGroup.MONSTER, 2F, 2F, EntityEndSlime::new, EntityEndSlime.createMobAttributes(), false, MHelper.color(28, 28, 28), MHelper.color(99, 11, 99));
|
||||||
|
public static final EntityType<EntityEndFish> END_FISH = register("end_fish", SpawnGroup.WATER_AMBIENT, 0.5F, 0.5F, EntityEndFish::new, EntityEndFish.createMobAttributes(), true, MHelper.color(120, 206, 255), MHelper.color(3, 50, 76));
|
||||||
|
|
||||||
public static void register() {
|
public static void register() {
|
||||||
SpawnHelper.restrictionLand(END_SLIME, EntityEndSlime::canSpawn);
|
SpawnHelper.restrictionLand(END_SLIME, EntityEndSlime::canSpawn);
|
||||||
|
|
|
@ -4,6 +4,7 @@ import net.fabricmc.fabric.api.client.rendereregistry.v1.EntityRendererRegistry;
|
||||||
import net.minecraft.client.render.entity.MobEntityRenderer;
|
import net.minecraft.client.render.entity.MobEntityRenderer;
|
||||||
import net.minecraft.entity.EntityType;
|
import net.minecraft.entity.EntityType;
|
||||||
import ru.betterend.entity.render.RendererEntityDragonfly;
|
import ru.betterend.entity.render.RendererEntityDragonfly;
|
||||||
|
import ru.betterend.entity.render.RendererEntityEndFish;
|
||||||
import ru.betterend.entity.render.RendererEntityEndSlime;
|
import ru.betterend.entity.render.RendererEntityEndSlime;
|
||||||
|
|
||||||
public class EntityRenderRegistry {
|
public class EntityRenderRegistry {
|
||||||
|
@ -11,6 +12,7 @@ public class EntityRenderRegistry {
|
||||||
public static void register() {
|
public static void register() {
|
||||||
register(EntityRegistry.DRAGONFLY, RendererEntityDragonfly.class);
|
register(EntityRegistry.DRAGONFLY, RendererEntityDragonfly.class);
|
||||||
register(EntityRegistry.END_SLIME, RendererEntityEndSlime.class);
|
register(EntityRegistry.END_SLIME, RendererEntityEndSlime.class);
|
||||||
|
register(EntityRegistry.END_FISH, RendererEntityEndFish.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void register(EntityType<?> type, Class<? extends MobEntityRenderer<?, ?>> renderer) {
|
private static void register(EntityType<?> type, Class<? extends MobEntityRenderer<?, ?>> renderer) {
|
||||||
|
|
Binary file not shown.
After Width: | Height: | Size: 2.4 KiB |
Binary file not shown.
After Width: | Height: | Size: 1.9 KiB |
Loading…
Add table
Add a link
Reference in a new issue