From 4237f5bdcaa20fb7f90c5fe87ee47f48f0cac40c Mon Sep 17 00:00:00 2001 From: paulevsGitch Date: Fri, 23 Oct 2020 20:04:37 +0300 Subject: [PATCH] End fish prototype --- .../ru/betterend/blocks/EndPortalBlock.java | 1 - .../ru/betterend/entity/BlockBenchModel.java | 13 ++++ .../ru/betterend/entity/EntityEndFish.java | 33 +++++++++ .../entity/model/ModelEntityDragonfly.java | 10 +-- .../entity/model/ModelEntityEndFish.java | 70 ++++++++++++++++++ .../entity/render/RendererEntityEndFish.java | 30 ++++++++ .../ru/betterend/item/EternalCrystal.java | 1 - .../mixin/common/ServerPlayerEntityMixin.java | 1 - .../ru/betterend/registry/EntityRegistry.java | 2 + .../registry/EntityRenderRegistry.java | 2 + .../textures/entity/end_fish/end_fish_2.png | Bin 0 -> 2467 bytes .../entity/end_fish/end_fish_2_glow.png | Bin 0 -> 1963 bytes 12 files changed, 152 insertions(+), 11 deletions(-) create mode 100644 src/main/java/ru/betterend/entity/BlockBenchModel.java create mode 100644 src/main/java/ru/betterend/entity/EntityEndFish.java create mode 100644 src/main/java/ru/betterend/entity/model/ModelEntityEndFish.java create mode 100644 src/main/java/ru/betterend/entity/render/RendererEntityEndFish.java create mode 100644 src/main/resources/assets/betterend/textures/entity/end_fish/end_fish_2.png create mode 100644 src/main/resources/assets/betterend/textures/entity/end_fish/end_fish_2_glow.png 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 0000000000000000000000000000000000000000..75ea4153a6f8e5526c5fe8c5c7705df25796a44a GIT binary patch literal 2467 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