diff --git a/src/main/java/ru/betterend/blocks/EndPortalBlock.java b/src/main/java/ru/betterend/blocks/EndPortalBlock.java index ce43282b..a5d896cb 100644 --- a/src/main/java/ru/betterend/blocks/EndPortalBlock.java +++ b/src/main/java/ru/betterend/blocks/EndPortalBlock.java @@ -22,7 +22,6 @@ import net.minecraft.world.World; import net.minecraft.world.WorldAccess; import net.minecraft.world.dimension.DimensionType; import net.minecraft.world.gen.feature.ConfiguredFeatures; - import ru.betterend.client.ERenderLayer; import ru.betterend.client.IRenderTypeable; import ru.betterend.interfaces.TeleportingEntity; diff --git a/src/main/java/ru/betterend/entity/BlockBenchModel.java b/src/main/java/ru/betterend/entity/BlockBenchModel.java new file mode 100644 index 00000000..a652c280 --- /dev/null +++ b/src/main/java/ru/betterend/entity/BlockBenchModel.java @@ -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 extends EntityModel { + protected void setRotationAngle(ModelPart modelRenderer, float x, float y, float z) { + modelRenderer.pitch = x; + modelRenderer.yaw = y; + modelRenderer.roll = z; + } +} diff --git a/src/main/java/ru/betterend/entity/EntityEndFish.java b/src/main/java/ru/betterend/entity/EntityEndFish.java new file mode 100644 index 00000000..a62b1901 --- /dev/null +++ b/src/main/java/ru/betterend/entity/EntityEndFish.java @@ -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 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); + } +} diff --git a/src/main/java/ru/betterend/entity/model/ModelEntityDragonfly.java b/src/main/java/ru/betterend/entity/model/ModelEntityDragonfly.java index 106f1bf3..9a75a7b1 100644 --- a/src/main/java/ru/betterend/entity/model/ModelEntityDragonfly.java +++ b/src/main/java/ru/betterend/entity/model/ModelEntityDragonfly.java @@ -2,11 +2,11 @@ package ru.betterend.entity.model; import net.minecraft.client.model.ModelPart; import net.minecraft.client.render.VertexConsumer; -import net.minecraft.client.render.entity.model.EntityModel; import net.minecraft.client.util.math.MatrixStack; +import ru.betterend.entity.BlockBenchModel; import ru.betterend.entity.EntityDragonfly; -public class ModelEntityDragonfly extends EntityModel { +public class ModelEntityDragonfly extends BlockBenchModel { private final ModelPart model; private final ModelPart head; private final ModelPart tail; @@ -99,10 +99,4 @@ public class ModelEntityDragonfly extends EntityModel { 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); } - - public void setRotationAngle(ModelPart modelRenderer, float x, float y, float z) { - modelRenderer.pitch = x; - modelRenderer.yaw = y; - modelRenderer.roll = z; - } } diff --git a/src/main/java/ru/betterend/entity/model/ModelEntityEndFish.java b/src/main/java/ru/betterend/entity/model/ModelEntityEndFish.java new file mode 100644 index 00000000..60069917 --- /dev/null +++ b/src/main/java/ru/betterend/entity/model/ModelEntityEndFish.java @@ -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 { + 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(); + } +} diff --git a/src/main/java/ru/betterend/entity/render/RendererEntityEndFish.java b/src/main/java/ru/betterend/entity/render/RendererEntityEndFish.java new file mode 100644 index 00000000..b5719da6 --- /dev/null +++ b/src/main/java/ru/betterend/entity/render/RendererEntityEndFish.java @@ -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 { + 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(this) { + @Override + public RenderLayer getEyesTexture() { + return GLOW; + } + }); + } + + @Override + public Identifier getTexture(EntityEndFish entity) { + return TEXTURE; + } +} \ No newline at end of file diff --git a/src/main/java/ru/betterend/item/EternalCrystal.java b/src/main/java/ru/betterend/item/EternalCrystal.java index c85ab01a..430bad81 100644 --- a/src/main/java/ru/betterend/item/EternalCrystal.java +++ b/src/main/java/ru/betterend/item/EternalCrystal.java @@ -7,7 +7,6 @@ import net.minecraft.server.world.ServerWorld; import net.minecraft.util.ActionResult; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; - import ru.betterend.blocks.RunedFlavolite; import ru.betterend.registry.ItemRegistry; import ru.betterend.util.PortalFrameHelper; diff --git a/src/main/java/ru/betterend/mixin/common/ServerPlayerEntityMixin.java b/src/main/java/ru/betterend/mixin/common/ServerPlayerEntityMixin.java index 20dd3b05..102cb8ea 100644 --- a/src/main/java/ru/betterend/mixin/common/ServerPlayerEntityMixin.java +++ b/src/main/java/ru/betterend/mixin/common/ServerPlayerEntityMixin.java @@ -7,7 +7,6 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import net.minecraft.server.network.ServerPlayerEntity; import net.minecraft.util.math.BlockPos; - import ru.betterend.interfaces.TeleportingEntity; @Mixin(ServerPlayerEntity.class) diff --git a/src/main/java/ru/betterend/registry/EntityRegistry.java b/src/main/java/ru/betterend/registry/EntityRegistry.java index f0b49d86..0e86335e 100644 --- a/src/main/java/ru/betterend/registry/EntityRegistry.java +++ b/src/main/java/ru/betterend/registry/EntityRegistry.java @@ -12,6 +12,7 @@ import net.minecraft.entity.attribute.DefaultAttributeContainer.Builder; import net.minecraft.util.registry.Registry; import ru.betterend.BetterEnd; import ru.betterend.entity.EntityDragonfly; +import ru.betterend.entity.EntityEndFish; import ru.betterend.entity.EntityEndSlime; import ru.betterend.util.MHelper; import ru.betterend.util.SpawnHelper; @@ -19,6 +20,7 @@ import ru.betterend.util.SpawnHelper; public class EntityRegistry { public static final EntityType 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 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 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() { SpawnHelper.restrictionLand(END_SLIME, EntityEndSlime::canSpawn); diff --git a/src/main/java/ru/betterend/registry/EntityRenderRegistry.java b/src/main/java/ru/betterend/registry/EntityRenderRegistry.java index 6459bddf..51dfd827 100644 --- a/src/main/java/ru/betterend/registry/EntityRenderRegistry.java +++ b/src/main/java/ru/betterend/registry/EntityRenderRegistry.java @@ -4,6 +4,7 @@ import net.fabricmc.fabric.api.client.rendereregistry.v1.EntityRendererRegistry; import net.minecraft.client.render.entity.MobEntityRenderer; import net.minecraft.entity.EntityType; import ru.betterend.entity.render.RendererEntityDragonfly; +import ru.betterend.entity.render.RendererEntityEndFish; import ru.betterend.entity.render.RendererEntityEndSlime; public class EntityRenderRegistry { @@ -11,6 +12,7 @@ public class EntityRenderRegistry { public static void register() { register(EntityRegistry.DRAGONFLY, RendererEntityDragonfly.class); register(EntityRegistry.END_SLIME, RendererEntityEndSlime.class); + register(EntityRegistry.END_FISH, RendererEntityEndFish.class); } private static void register(EntityType type, Class> renderer) { diff --git a/src/main/resources/assets/betterend/textures/entity/end_fish/end_fish_2.png b/src/main/resources/assets/betterend/textures/entity/end_fish/end_fish_2.png new file mode 100644 index 00000000..75ea4153 Binary files /dev/null and b/src/main/resources/assets/betterend/textures/entity/end_fish/end_fish_2.png differ diff --git a/src/main/resources/assets/betterend/textures/entity/end_fish/end_fish_2_glow.png b/src/main/resources/assets/betterend/textures/entity/end_fish/end_fish_2_glow.png new file mode 100644 index 00000000..56d3ba09 Binary files /dev/null and b/src/main/resources/assets/betterend/textures/entity/end_fish/end_fish_2_glow.png differ