-
Posts
727 -
Joined
-
Last visited
Everything posted by Drachenbauer
-
Hello I´m creating a Player-model as a classic Angry Birds-character. I want the whoole visible bird act as the head (rotating with mouse-movement) and two invisible cubes as arms (to use armpose animations for holded items). It should look like the Angry birds use objects wich some telecinetic powers in their cartoon-series (objects hover next to their body and can be moved by the bird.). I made it extend BipedModel, because this class holds alot of stuff, that a player-character needs: package drachenbauer32.angrybirdsmod.entities.models; import java.util.List; import java.util.Random; import com.google.common.collect.Lists; import com.mojang.blaze3d.matrix.MatrixStack; import net.minecraft.client.renderer.RenderType; import net.minecraft.client.renderer.entity.model.BipedModel; import net.minecraft.client.renderer.model.ModelRenderer; import net.minecraft.entity.LivingEntity; import net.minecraft.util.HandSide; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; @OnlyIn(Dist.CLIENT) public class StellaPlayerModel<T extends LivingEntity> extends BipedModel<T> { private List<ModelRenderer> field_228286_w_ = Lists.newArrayList(); private final ModelRenderer bone2; private final ModelRenderer bone3; private final ModelRenderer bone4; private final ModelRenderer bone5; public StellaPlayerModel(float modelSize, boolean smallArmsIn) { super(RenderType::func_228644_e_, modelSize, 0.0F, 64, 64); textureWidth = 32; textureHeight = 24; bipedHead = new ModelRenderer(this); bipedHead.setRotationPoint(0.0F, 20.0F, 0.0F); bipedHead.func_217178_a("body", -4.0F, -4.0F, -4.0F, 8, 8, 8, 0.0F, 0, 0); bipedHead.func_217178_a("beak", -1.0F, 2.0F, -5.0F, 2, 1, 1, 0.0F, 25, 0); bipedHead.func_217178_a("head_feather_1", 0.0F, -6.0F, -8.0F, 0, 2, 6, 0.0F, 10, 10); bipedHead.func_217178_a("tail_feather_1", 0.0F, 1.0F, 4.0F, 0, 1, 4, 0.0F, 24, 3); bone2 = new ModelRenderer(this); bone2.setRotationPoint(0.0F, -4.0F, -2.0F); setRotationAngle(bone2, -0.5236F, 0.0F, 0.0F); bipedHead.addChild(bone2); bone2.func_217178_a("head_feather_2", 0.0F, -2.0F, -6.0F, 0, 2, 6, 0.0F, 10, 10); bone3 = new ModelRenderer(this); bone3.setRotationPoint(0.0F, -4.0F, -2.0F); setRotationAngle(bone3, -1.0472F, 0.0F, 0.0F); bipedHead.addChild(bone3); bone3.func_217178_a("head_feather_3", 0.0F, -2.0F, -6.0F, 0, 2, 8, 0.0F, 8, 8); bone4 = new ModelRenderer(this); bone4.setRotationPoint(0.0F, 1.0F, 4.0F); setRotationAngle(bone4, 0.5236F, 0.0F, 0.0F); bipedHead.addChild(bone4); bone4.func_217178_a("tail_feather_2", 0.0F, 0.0F, 0.0F, 0, 1, 4, 0.0F, 24, 3); bone5 = new ModelRenderer(this); bone5.setRotationPoint(0.0F, 1.0F, 4.0F); setRotationAngle(bone5, -0.5236F, 0.0F, 0.0F); bipedHead.addChild(bone5); bone5.func_217178_a("tail_feather_3", 0.0F, 0.0F, 0.0F, 0, 1, 4, 0.0F, 24, 3); bipedRightArm = new ModelRenderer(this); bipedRightArm.setRotationPoint(-6.0F, 22.0F, -4.0F); setRotationAngle(bipedRightArm, -1.5708F, 0.0F, 0.0F); bipedRightArm.func_217178_a("invisible_right_arm", -2.0F, -2.0F, -2.0F, 4, 4, 4, 0.0F, 0, 16); bipedLeftArm = new ModelRenderer(this); bipedLeftArm.setRotationPoint(6.0F, 22.0F, -4.0F); setRotationAngle(bipedLeftArm, -1.5708F, 0.0F, 0.0F); bipedLeftArm.func_217178_a("invisible_left_arm", -2.0F, -2.0F, -2.0F, 4, 4, 4, 0.0F, 0, 16); } /*public void render(StellaPlayerEntity entity, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch, float scale) { bipedHead.render(scale); bipedRightArm.render(scale); bipedLeftArm.render(scale); }*/ protected Iterable<ModelRenderer> func_225600_b_() { return super.func_225600_b_(); } public void setRotationAngle(ModelRenderer model, float x, float y, float z) { model.rotateAngleX = x; model.rotateAngleY = y; model.rotateAngleZ = z; } public void func_225599_a_(HandSide p_225599_1_, MatrixStack p_225599_2_) { ModelRenderer modelrenderer = this.getArmForSide(p_225599_1_); float f = 0.5F * (float)(p_225599_1_ == HandSide.RIGHT ? 1 : -1); modelrenderer.rotationPointX += f; modelrenderer.func_228307_a_(p_225599_2_); modelrenderer.rotationPointX -= f; } public ModelRenderer func_228288_a_(Random p_228288_1_) { return this.field_228286_w_.get(p_228288_1_.nextInt(this.field_228286_w_.size())); } public void accept(ModelRenderer p_accept_1_) { if (this.field_228286_w_ == null) { this.field_228286_w_ = Lists.newArrayList(); } this.field_228286_w_.add(p_accept_1_); } } But i have some questions: 1. How do i prevent it from rendering the body and legs parts from BipedModel? 2. Does it render my bodyparts instead of the ones from BipedModel? 3. The whoole body of this bird has the same size as the head of the common player-model, but sit´s directly on the ground. How do i make the helmet from armour appear in this new lower position (i think, the other armour pieces don´t appear, because i didn´t place them here)?
-
Hello i try to update the renderer for my player-model: package drachenbauer32.angrybirdsmod.entities.renderers; import com.mojang.blaze3d.matrix.MatrixStack; import drachenbauer32.angrybirdsmod.entities.StellaMoviePlayerEntity; import drachenbauer32.angrybirdsmod.entities.models.StellaMoviePlayerModel; import drachenbauer32.angrybirdsmod.util.Reference; import net.minecraft.client.entity.player.AbstractClientPlayerEntity; import net.minecraft.client.renderer.IRenderTypeBuffer; import net.minecraft.client.renderer.RenderType; import net.minecraft.client.renderer.Vector3f; import net.minecraft.client.renderer.entity.EntityRenderer; import net.minecraft.client.renderer.entity.EntityRendererManager; import net.minecraft.client.renderer.entity.LivingRenderer; import net.minecraft.client.renderer.entity.layers.ArrowLayer; import net.minecraft.client.renderer.entity.layers.BeeStingerLayer; import net.minecraft.client.renderer.entity.layers.BipedArmorLayer; import net.minecraft.client.renderer.entity.layers.CapeLayer; import net.minecraft.client.renderer.entity.layers.Deadmau5HeadLayer; import net.minecraft.client.renderer.entity.layers.ElytraLayer; import net.minecraft.client.renderer.entity.layers.HeadLayer; import net.minecraft.client.renderer.entity.layers.HeldItemLayer; import net.minecraft.client.renderer.entity.layers.ParrotVariantLayer; import net.minecraft.client.renderer.entity.layers.SpinAttackEffectLayer; import net.minecraft.client.renderer.entity.model.BipedModel; import net.minecraft.client.renderer.entity.model.PlayerModel; import net.minecraft.client.renderer.model.ModelRenderer; import net.minecraft.client.renderer.texture.OverlayTexture; import net.minecraft.entity.Entity; import net.minecraft.entity.player.PlayerModelPart; import net.minecraft.item.CrossbowItem; import net.minecraft.item.ItemStack; import net.minecraft.item.Items; import net.minecraft.item.UseAction; import net.minecraft.scoreboard.Score; import net.minecraft.scoreboard.ScoreObjective; import net.minecraft.scoreboard.Scoreboard; import net.minecraft.util.Hand; import net.minecraft.util.HandSide; import net.minecraft.util.ResourceLocation; import net.minecraft.util.math.MathHelper; import net.minecraft.util.math.Vec3d; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.fml.client.registry.IRenderFactory; @OnlyIn(Dist.CLIENT) public class StellaMoviePlayerRenderer extends LivingRenderer<AbstractClientPlayerEntity, PlayerModel<AbstractClientPlayerEntity>> { private static final ResourceLocation STELLA_MOVIE_PLAYER_TEXTURE = new ResourceLocation(Reference.MOD_ID + ":textures/entity/stella_movie_player.png"); public StellaMoviePlayerRenderer(EntityRendererManager renderManager) { this(renderManager, false); } public StellaMoviePlayerRenderer(EntityRendererManager renderManager, boolean useSmallArms) { super(renderManager, new PlayerModel<>(0.0F, useSmallArms), 0.5F); this.addLayer(new BipedArmorLayer<>(this, new BipedModel(0.5F), new BipedModel(1.0F))); this.addLayer(new HeldItemLayer<>(this)); this.addLayer(new ArrowLayer<>(this)); this.addLayer(new CapeLayer(this)); this.addLayer(new HeadLayer<>(this)); this.addLayer(new ElytraLayer<>(this)); this.addLayer(new ParrotVariantLayer<>(this)); this.addLayer(new SpinAttackEffectLayer<>(this)); this.addLayer(new BeeStingerLayer<>(this)); } public void func_225623_a_(AbstractClientPlayerEntity p_225623_1_, float p_225623_2_, float p_225623_3_, MatrixStack p_225623_4_, IRenderTypeBuffer p_225623_5_, int p_225623_6_) { this.setModelVisibilities(p_225623_1_); if (net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.client.event.RenderPlayerEvent.Pre(p_225623_1_, this, p_225623_3_, p_225623_4_))) { return; } super.func_225623_a_(p_225623_1_, p_225623_2_, p_225623_3_, p_225623_4_, p_225623_5_, p_225623_6_); net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.client.event.RenderPlayerEvent.Post(p_225623_1_, this, p_225623_3_, p_225623_4_)); } public Vec3d func_225627_b_(AbstractClientPlayerEntity p_225627_1_, float p_225627_2_) { return p_225627_1_.isCrouching() ? new Vec3d(0.0D, -0.125D, 0.0D) : super.func_225627_b_(p_225627_1_, p_225627_2_); } private void setModelVisibilities(AbstractClientPlayerEntity clientPlayer) { PlayerModel<AbstractClientPlayerEntity> playermodel = this.getEntityModel(); if (clientPlayer.isSpectator()) { playermodel.setVisible(false); playermodel.bipedHead.showModel = true; playermodel.bipedHeadwear.showModel = true; } else { ItemStack itemstack = clientPlayer.getHeldItemMainhand(); ItemStack itemstack1 = clientPlayer.getHeldItemOffhand(); playermodel.setVisible(true); playermodel.bipedHeadwear.showModel = clientPlayer.isWearing(PlayerModelPart.HAT); playermodel.bipedBodyWear.showModel = clientPlayer.isWearing(PlayerModelPart.JACKET); playermodel.bipedLeftLegwear.showModel = clientPlayer.isWearing(PlayerModelPart.LEFT_PANTS_LEG); playermodel.bipedRightLegwear.showModel = clientPlayer.isWearing(PlayerModelPart.RIGHT_PANTS_LEG); playermodel.bipedLeftArmwear.showModel = clientPlayer.isWearing(PlayerModelPart.LEFT_SLEEVE); playermodel.bipedRightArmwear.showModel = clientPlayer.isWearing(PlayerModelPart.RIGHT_SLEEVE); playermodel.field_228270_o_ = clientPlayer.isCrouching(); BipedModel.ArmPose bipedmodel$armpose = this.func_217766_a(clientPlayer, itemstack, itemstack1, Hand.MAIN_HAND); BipedModel.ArmPose bipedmodel$armpose1 = this.func_217766_a(clientPlayer, itemstack, itemstack1, Hand.OFF_HAND); if (clientPlayer.getPrimaryHand() == HandSide.RIGHT) { playermodel.rightArmPose = bipedmodel$armpose; playermodel.leftArmPose = bipedmodel$armpose1; } else { playermodel.rightArmPose = bipedmodel$armpose1; playermodel.leftArmPose = bipedmodel$armpose; } } } private BipedModel.ArmPose func_217766_a(AbstractClientPlayerEntity p_217766_1_, ItemStack p_217766_2_, ItemStack p_217766_3_, Hand p_217766_4_) { BipedModel.ArmPose bipedmodel$armpose = BipedModel.ArmPose.EMPTY; ItemStack itemstack = p_217766_4_ == Hand.MAIN_HAND ? p_217766_2_ : p_217766_3_; if (!itemstack.isEmpty()) { bipedmodel$armpose = BipedModel.ArmPose.ITEM; if (p_217766_1_.getItemInUseCount() > 0) { UseAction useaction = itemstack.getUseAction(); if (useaction == UseAction.BLOCK) { bipedmodel$armpose = BipedModel.ArmPose.BLOCK; } else if (useaction == UseAction.BOW) { bipedmodel$armpose = BipedModel.ArmPose.BOW_AND_ARROW; } else if (useaction == UseAction.SPEAR) { bipedmodel$armpose = BipedModel.ArmPose.THROW_SPEAR; } else if (useaction == UseAction.CROSSBOW && p_217766_4_ == p_217766_1_.getActiveHand()) { bipedmodel$armpose = BipedModel.ArmPose.CROSSBOW_CHARGE; } } else { boolean flag3 = p_217766_2_.getItem() == Items.CROSSBOW; boolean flag = CrossbowItem.isCharged(p_217766_2_); boolean flag1 = p_217766_3_.getItem() == Items.CROSSBOW; boolean flag2 = CrossbowItem.isCharged(p_217766_3_); if (flag3 && flag) { bipedmodel$armpose = BipedModel.ArmPose.CROSSBOW_HOLD; } if (flag1 && flag2 && p_217766_2_.getItem().getUseAction(p_217766_2_) == UseAction.NONE) { bipedmodel$armpose = BipedModel.ArmPose.CROSSBOW_HOLD; } } } return bipedmodel$armpose; } public ResourceLocation getEntityTexture(AbstractClientPlayerEntity entity) { return STELLA_MOVIE_PLAYER_TEXTURE; } protected void func_225620_a_(AbstractClientPlayerEntity p_225620_1_, MatrixStack p_225620_2_, float p_225620_3_) { float f = 0.9375F; p_225620_2_.func_227862_a_(0.9375F, 0.9375F, 0.9375F); } protected void func_225629_a_(AbstractClientPlayerEntity p_225629_1_, String p_225629_2_, MatrixStack p_225629_3_, IRenderTypeBuffer p_225629_4_, int p_225629_5_) { double d0 = this.renderManager.func_229099_b_(p_225629_1_); p_225629_3_.func_227860_a_(); if (d0 < 100.0D) { Scoreboard scoreboard = p_225629_1_.getWorldScoreboard(); ScoreObjective scoreobjective = scoreboard.getObjectiveInDisplaySlot(2); if (scoreobjective != null) { Score score = scoreboard.getOrCreateScore(p_225629_1_.getScoreboardName(), scoreobjective); super.func_225629_a_(p_225629_1_, score.getScorePoints() + " " + scoreobjective.getDisplayName().getFormattedText(), p_225629_3_, p_225629_4_, p_225629_5_); p_225629_3_.func_227861_a_(0.0D, (double)(9.0F * 1.15F * 0.025F), 0.0D); } } super.func_225629_a_(p_225629_1_, p_225629_2_, p_225629_3_, p_225629_4_, p_225629_5_); p_225629_3_.func_227865_b_(); } public void func_229144_a_(MatrixStack p_229144_1_, IRenderTypeBuffer p_229144_2_, int p_229144_3_, AbstractClientPlayerEntity p_229144_4_) { this.func_229145_a_(p_229144_1_, p_229144_2_, p_229144_3_, p_229144_4_, (this.entityModel).bipedRightArm, (this.entityModel).bipedRightArmwear); } public void func_229146_b_(MatrixStack p_229146_1_, IRenderTypeBuffer p_229146_2_, int p_229146_3_, AbstractClientPlayerEntity p_229146_4_) { this.func_229145_a_(p_229146_1_, p_229146_2_, p_229146_3_, p_229146_4_, (this.entityModel).bipedLeftArm, (this.entityModel).bipedLeftArmwear); } private void func_229145_a_(MatrixStack p_229145_1_, IRenderTypeBuffer p_229145_2_, int p_229145_3_, AbstractClientPlayerEntity p_229145_4_, ModelRenderer p_229145_5_, ModelRenderer p_229145_6_) { PlayerModel<AbstractClientPlayerEntity> playermodel = this.getEntityModel(); this.setModelVisibilities(p_229145_4_); playermodel.swingProgress = 0.0F; playermodel.field_228270_o_ = false; playermodel.swimAnimation = 0.0F; playermodel.func_225597_a_(p_229145_4_, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F); p_229145_5_.rotateAngleX = 0.0F; p_229145_5_.func_228308_a_(p_229145_1_, p_229145_2_.getBuffer(RenderType.func_228634_a_(p_229145_4_.getLocationSkin())), p_229145_3_, OverlayTexture.field_229196_a_); p_229145_6_.rotateAngleX = 0.0F; p_229145_6_.func_228308_a_(p_229145_1_, p_229145_2_.getBuffer(RenderType.func_228644_e_(p_229145_4_.getLocationSkin())), p_229145_3_, OverlayTexture.field_229196_a_); } protected void func_225621_a_(AbstractClientPlayerEntity p_225621_1_, MatrixStack p_225621_2_, float p_225621_3_, float p_225621_4_, float p_225621_5_) { float f = p_225621_1_.getSwimAnimation(p_225621_5_); if (p_225621_1_.isElytraFlying()) { super.func_225621_a_(p_225621_1_, p_225621_2_, p_225621_3_, p_225621_4_, p_225621_5_); float f1 = (float)p_225621_1_.getTicksElytraFlying() + p_225621_5_; float f2 = MathHelper.clamp(f1 * f1 / 100.0F, 0.0F, 1.0F); if (!p_225621_1_.isSpinAttacking()) { p_225621_2_.func_227863_a_(Vector3f.field_229179_b_.func_229187_a_(f2 * (-90.0F - p_225621_1_.rotationPitch))); } Vec3d vec3d = p_225621_1_.getLook(p_225621_5_); Vec3d vec3d1 = p_225621_1_.getMotion(); double d0 = Entity.func_213296_b(vec3d1); double d1 = Entity.func_213296_b(vec3d); if (d0 > 0.0D && d1 > 0.0D) { double d2 = (vec3d1.x * vec3d.x + vec3d1.z * vec3d.z) / (Math.sqrt(d0) * Math.sqrt(d1)); double d3 = vec3d1.x * vec3d.z - vec3d1.z * vec3d.x; p_225621_2_.func_227863_a_(Vector3f.field_229181_d_.func_229193_c_((float)(Math.signum(d3) * Math.acos(d2)))); } } else if (f > 0.0F) { super.func_225621_a_(p_225621_1_, p_225621_2_, p_225621_3_, p_225621_4_, p_225621_5_); float f3 = p_225621_1_.isInWater() ? -90.0F - p_225621_1_.rotationPitch : -90.0F; float f4 = MathHelper.lerp(f, 0.0F, f3); p_225621_2_.func_227863_a_(Vector3f.field_229179_b_.func_229187_a_(f4)); if (p_225621_1_.func_213314_bj()) { p_225621_2_.func_227861_a_(0.0D, -1.0D, (double)0.3F); } } else { super.func_225621_a_(p_225621_1_, p_225621_2_, p_225621_3_, p_225621_4_, p_225621_5_); } } } `i decided to makeit like the official render. But it shows an error: In this line: net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.client.event.RenderPlayerEvent.Post(p_225623_1_, this, p_225623_3_, p_225623_4_)); the red marked part begins at the word "new". and there is a seccond almost identical line with an almost identical error. Why this does not work here?
-
What else shoud i call in the entity in the positions with the comments? Why i should not use a method from the renderer there? Edit: in the renderer from the pufferfish i found the method: public void func_225623_a_(PufferfishEntity p_225623_1_, float p_225623_2_, float p_225623_3_, MatrixStack p_225623_4_, IRenderTypeBuffer p_225623_5_, int p_225623_6_) { int i = p_225623_1_.getPuffState(); if (i != this.field_203772_j) { if (i == 0) { this.entityModel = this.field_203773_k; } else if (i == 1) { this.entityModel = this.field_203774_l; } else { this.entityModel = this.field_203775_m; } } this.field_203772_j = i; this.shadowSize = 0.1F + 0.1F * (float)i; super.func_225623_a_(p_225623_1_, p_225623_2_, p_225623_3_, p_225623_4_, p_225623_5_, p_225623_6_); } That holds it´s different sized models. Is this a good place for the models of my entity? I also have a subclass called RenderFactory in my renderers. But i don´t see it for sample at the pufferfish. do i still need it?
-
how do i write an implementation for this?
-
How do i set mirrored texturing on entity-model
Drachenbauer replied to Drachenbauer's topic in Modder Support
I still need help here. -
This is now the renderer-class: package drachenbauer32.angrybirdsmod.entities.renderers; import com.mojang.blaze3d.matrix.MatrixStack; import com.mojang.blaze3d.systems.RenderSystem; import drachenbauer32.angrybirdsmod.entities.BubblesEntity; import drachenbauer32.angrybirdsmod.entities.models.BubblesInflatedModel; import drachenbauer32.angrybirdsmod.entities.models.BubblesModel; import drachenbauer32.angrybirdsmod.util.Reference; import net.minecraft.client.renderer.IRenderTypeBuffer; import net.minecraft.client.renderer.entity.EntityRenderer; import net.minecraft.client.renderer.entity.EntityRendererManager; import net.minecraft.client.renderer.entity.MobRenderer; import net.minecraft.client.renderer.entity.model.EntityModel; import net.minecraft.util.ResourceLocation; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.fml.client.registry.IRenderFactory; @OnlyIn(Dist.CLIENT) public class BubblesRenderer extends MobRenderer<BubblesEntity, EntityModel<BubblesEntity>> { private static final ResourceLocation BUBBLES_TEXTURE = new ResourceLocation(Reference.MOD_ID + ":textures/entity/bubbles.png"); private final BubblesModel<BubblesEntity> BUBBLES_MODEL= new BubblesModel<>(); private final BubblesInflatedModel<BubblesEntity> BUBBLES_INFLATED_MODEL= new BubblesInflatedModel<>(); public BubblesRenderer(EntityRendererManager manager) { super(manager, new BubblesModel<>(), 0.25f); } @Override public ResourceLocation getEntityTexture(BubblesEntity arg0) { return BUBBLES_TEXTURE; } @Override protected void func_225629_a_(BubblesEntity p_225629_1_, String p_225629_2_, MatrixStack p_225629_3_, IRenderTypeBuffer p_225629_4_, int p_225629_5_) { RenderSystem.scalef(0.5f, 0.5f, 0.5f); } public void setInflated(boolean inflated) { if (inflated) { entityModel = BUBBLES_INFLATED_MODEL; } else { entityModel = BUBBLES_MODEL; } } public static class RenderFactory implements IRenderFactory<BubblesEntity> { @Override public EntityRenderer<? super BubblesEntity> createRenderFor(EntityRendererManager manager) { return new BubblesRenderer(manager); } } } For controlling the inflating by collision with my player-character, i created this in the BubblesEntity-class: @Override public void livingTick() { if (timeUntilDeflating > 0) { timeUntilDeflating--; if (timeUntilDeflating == 0) { //method-call for deflate } } else { super.livingTick(); } } @Override public void onCollideWithPlayer(PlayerEntity entityIn) { if (timeUntilDeflating == 0) { timeUntilDeflating = 80; //method-call for inflate } } But now i have a question: If i spawn an entity, it generates it´s own instances from it´s entity-class and renderer-clas. If i spawn 2 or more, there must be instances like this: Bubbles-bird 1: BubblesEntity-class-instance 1 BubblesRenderer-class-instance 1 Bubbles-bird 2: BubblesEntity-class-instance 2 BubblesRenderer-class-instance 2 ... So how do i call my method from the renderer in the shown code in the entity-class, that it calls it from the matching renderer-instance? Collision with Bubbles-bird 1: BubblesEntity-class-instance 1 --- calls --> method in BubblesRenderer-class-instance 1 Collision with Bubbles-bird 2 BubblesEntity-class-instance 2 --- calls --> method in BubblesRenderer-class-instance 2 ... I think, if i call it the static way, all of them will inflate, if i collide with one. So how do i make it find the right instance from the renderer to call the method?
-
And what must i put inte the render-method in the model? I have to create it before i can use it there, because it´s not more part from the normal model-classes. For the texture i looked at the pufferfish. there i saw, that they placed the textures for all sizes in one single graphic file. So i made it for this bird the same way. I just hat to place the texture for his normal sized body into the texture for the inflated state. If inflated, he is five times as big as normal. So the normal body-texture fit´s in one of the top-squares, that the inflated state-texture leaves empty. I can use the textures for beak and feathers for both states, because theese parts do not grow or shrink, if he inflates or deflates..
-
Hello If i update my mod to the latest version of minecraft, i copy the mod-folder with tha minecraft-version as name to keep a mod version, that is compatible with the previous minecraft-version. Now it shows the repository-stuff in the project explorer in eclipse, but my changes don´t appear in github desktop. how do i now connect the actual version of my mod with this repository instead of the previous one?
-
Hello I want to update thr renderer for my Angry Birds slingshot-munition. package drachenbauer32.angrybirdsmod.entities.renderers; import java.nio.FloatBuffer; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import com.mojang.blaze3d.matrix.MatrixStack; import com.mojang.blaze3d.platform.GLX; import com.mojang.blaze3d.platform.GlStateManager; import com.mojang.blaze3d.vertex.IVertexBuilder; import drachenbauer32.angrybirdsmod.entities.BirdShotEntity; import net.minecraft.client.renderer.GLAllocation; import net.minecraft.client.renderer.IRenderTypeBuffer; import net.minecraft.client.renderer.Matrix3f; import net.minecraft.client.renderer.Matrix4f; import net.minecraft.client.renderer.RenderType; import net.minecraft.client.renderer.Vector3f; import net.minecraft.client.renderer.entity.EntityRenderer; import net.minecraft.client.renderer.entity.EntityRendererManager; import net.minecraft.client.renderer.entity.IEntityRenderer; import net.minecraft.client.renderer.entity.model.EntityModel; import net.minecraft.client.renderer.texture.DynamicTexture; import net.minecraft.client.renderer.texture.OverlayTexture; import net.minecraft.entity.Entity; import net.minecraft.entity.projectile.AbstractArrowEntity; import net.minecraft.util.Util; import net.minecraft.util.math.MathHelper; public abstract class AbstractBirdStotRenderer<T extends BirdShotEntity> extends EntityRenderer<T> { protected M entityModel; protected boolean renderMarker; public AbstractBirdStotRenderer(EntityRendererManager renderManagerIn) { super(renderManagerIn); } public M getEntityModel() { return this.entityModel; } public void func_225623_a_(T p_225623_1_, float p_225623_2_, float p_225623_3_, MatrixStack p_225623_4_, IRenderTypeBuffer p_225623_5_, int p_225623_6_) { p_225623_4_.func_227860_a_(); p_225623_4_.func_227863_a_(Vector3f.field_229181_d_.func_229187_a_(MathHelper.lerp(p_225623_3_, p_225623_1_.prevRotationYaw, p_225623_1_.rotationYaw) - 90.0F)); p_225623_4_.func_227863_a_(Vector3f.field_229183_f_.func_229187_a_(MathHelper.lerp(p_225623_3_, p_225623_1_.prevRotationPitch, p_225623_1_.rotationPitch))); int i = 0; float f = 0.0F; float f1 = 0.5F; float f2 = 0.0F; float f3 = 0.15625F; float f4 = 0.0F; float f5 = 0.15625F; float f6 = 0.15625F; float f7 = 0.3125F; float f8 = 0.05625F; float f9 = (float)p_225623_1_.arrowShake - p_225623_3_; if (f9 > 0.0F) { float f10 = -MathHelper.sin(f9 * 3.0F) * f9; p_225623_4_.func_227863_a_(Vector3f.field_229183_f_.func_229187_a_(f10)); } p_225623_4_.func_227863_a_(Vector3f.field_229179_b_.func_229187_a_(45.0F)); p_225623_4_.func_227862_a_(0.05625F, 0.05625F, 0.05625F); p_225623_4_.func_227861_a_(-4.0D, 0.0D, 0.0D); IVertexBuilder ivertexbuilder = p_225623_5_.getBuffer(RenderType.func_228638_b_(this.getEntityTexture(p_225623_1_))); MatrixStack.Entry matrixstack$entry = p_225623_4_.func_227866_c_(); Matrix4f matrix4f = matrixstack$entry.func_227870_a_(); Matrix3f matrix3f = matrixstack$entry.func_227872_b_(); this.func_229039_a_(matrix4f, matrix3f, ivertexbuilder, -7, -2, -2, 0.0F, 0.15625F, -1, 0, 0, p_225623_6_); this.func_229039_a_(matrix4f, matrix3f, ivertexbuilder, -7, -2, 2, 0.15625F, 0.15625F, -1, 0, 0, p_225623_6_); this.func_229039_a_(matrix4f, matrix3f, ivertexbuilder, -7, 2, 2, 0.15625F, 0.3125F, -1, 0, 0, p_225623_6_); this.func_229039_a_(matrix4f, matrix3f, ivertexbuilder, -7, 2, -2, 0.0F, 0.3125F, -1, 0, 0, p_225623_6_); this.func_229039_a_(matrix4f, matrix3f, ivertexbuilder, -7, 2, -2, 0.0F, 0.15625F, 1, 0, 0, p_225623_6_); this.func_229039_a_(matrix4f, matrix3f, ivertexbuilder, -7, 2, 2, 0.15625F, 0.15625F, 1, 0, 0, p_225623_6_); this.func_229039_a_(matrix4f, matrix3f, ivertexbuilder, -7, -2, 2, 0.15625F, 0.3125F, 1, 0, 0, p_225623_6_); this.func_229039_a_(matrix4f, matrix3f, ivertexbuilder, -7, -2, -2, 0.0F, 0.3125F, 1, 0, 0, p_225623_6_); for(int j = 0; j < 4; ++j) { p_225623_4_.func_227863_a_(Vector3f.field_229179_b_.func_229187_a_(90.0F)); this.func_229039_a_(matrix4f, matrix3f, ivertexbuilder, -8, -2, 0, 0.0F, 0.0F, 0, 1, 0, p_225623_6_); this.func_229039_a_(matrix4f, matrix3f, ivertexbuilder, 8, -2, 0, 0.5F, 0.0F, 0, 1, 0, p_225623_6_); this.func_229039_a_(matrix4f, matrix3f, ivertexbuilder, 8, 2, 0, 0.5F, 0.15625F, 0, 1, 0, p_225623_6_); this.func_229039_a_(matrix4f, matrix3f, ivertexbuilder, -8, 2, 0, 0.0F, 0.15625F, 0, 1, 0, p_225623_6_); } p_225623_4_.func_227865_b_(); super.func_225623_a_(p_225623_1_, p_225623_2_, p_225623_3_, p_225623_4_, p_225623_5_, p_225623_6_); } public void func_229039_a_(Matrix4f p_229039_1_, Matrix3f p_229039_2_, IVertexBuilder p_229039_3_, int p_229039_4_, int p_229039_5_, int p_229039_6_, float p_229039_7_, float p_229039_8_, int p_229039_9_, int p_229039_10_, int p_229039_11_, int p_229039_12_) { p_229039_3_.func_227888_a_(p_229039_1_, (float)p_229039_4_, (float)p_229039_5_, (float)p_229039_6_).func_225586_a_(255, 255, 255, 255).func_225583_a_(p_229039_7_, p_229039_8_).func_227891_b_(OverlayTexture.field_229196_a_).func_227886_a_(p_229039_12_).func_227887_a_(p_229039_2_, (float)p_229039_9_, (float)p_229039_11_, (float)p_229039_10_).endVertex(); } } But it shows errors on "M entityModel". I don´t know why... Can you please help me find out, why it´s wrong?
-
How do i set mirrored texturing on entity-model
Drachenbauer replied to Drachenbauer's topic in Modder Support
I still don´t know how to mirror the texture from just one model-cube now without creating a new bodypart (ModelRenderer) for it... -
Hello A while ago, i noticed, that my entities drown, if they land in water. How can i make them immune against drowning,even if the eyehight sinks under the water line? At first i thaught, entities only can drown, if i use the BreatheAirGoal. but i don´t use it in my entities, and they still can drown. What else is the use of this Goal? And is there a Goal for survive under water? edit: I think, i found, what i needed: @Override public boolean canBreatheUnderwater() { return true; }
-
Hello My new Entity has got an antenna with a glowing tip on it´s head (like an angler-fish). How can i make it emmit it´s own light, that moves with it?
-
Hello In the entity-class of the wolf, i founf a method for it´s tail to show it´s health. @OnlyIn(Dist.CLIENT) public float getTailRotation() { if (this.isAngry()) { return 1.5393804F; } else { return this.isTamed() ? (0.55F - (this.getMaxHealth() - this.getHealth()) * 0.02F) * (float)Math.PI : ((float)Math.PI / 5F); } } I reduced it to this for my own entity: @OnlyIn(Dist.CLIENT) public float getTailRotation() { return this.isTamed() ? (0.55F - (this.getMaxHealth() - this.getHealth()) * 0.02F) * (float)Math.PI : ((float)Math.PI / 5F); } Now, i want to remove the "isTamed"-part of the line, because i don´t work with taming theese entities. But, if i try this, an error appears on the first position of Math.PI. So i wonder, what "?" and ":" mean and how i can get rid of "isTamed" here... Can you help? Edit: After alot of google i gound out, that "?" and ":" used together in such a case are another version of "if" and "else". So i just hat to keep the part between them and remove the rest. This is the result: @OnlyIn(Dist.CLIENT) public float getTailRotation() { return (0.55F - (this.getMaxHealth() - this.getHealth()) * 0.02F) * (float)Math.PI; }
-
Ai i now used a texture with semi-transparencys on an entity-model in BlockBench, i can see cubes, located inside the same bodypart(bones) through this transparent part, but not parts of an other bodypart. In this sample the purple fin on the head of the model has such transharencies, wich show the part of the head, that´s behind the fin. But at the bottom end of the fin (red arrow), a part of the big tail-cube is also hidden behind the fin and appears invisible. Does this happen in minecraft, too? If yes, what can i do, that it does not happen?
-
Hello Theese are two modelboxes in 1.14.3 style: bone.cubeList.add(new ModelBox(bone, 0, 2, -3.0F, -10.0F, 0.0F, 2, 6, 0, 0.0F, false)); bone.cubeList.add(new ModelBox(bone, 0, 2, 1.0F, -10.0F, 0.0F, 2, 6, 0, 0.0F, true)); the boolean at the end means, that the seccond one has the texture mirrored. How do i set this property now? At the iron golem i found this: this.ironGolemRightLeg.mirror = true; But this mirrors the textures of the whoole body-part. I only want to mirror the texture of one cube. I don´t want to put it into a new ModelRenderer, only to mirror it´s texture.
-
1.15.1 how do i set the scale of entity?
Drachenbauer replied to Drachenbauer's topic in Modder Support
There are so many methods, wich have weird coded names, that the forge-people not have renamed yet. This makes it difficult for me to find the right one. -
How do i register the renderers for my entities?
Drachenbauer replied to Drachenbauer's topic in Modder Support
Now i have no more errors in my renderinghandler. -
1.15.1 how do i set the scale of entity?
Drachenbauer replied to Drachenbauer's topic in Modder Support
I have no place for it any more, so i need to find a new pace, that does not exist in my code so far. Can you please tell me for example, wich method replaces public float prepareScale now? Then this will be the place now. -
How do i register the renderers for my entities?
Drachenbauer replied to Drachenbauer's topic in Modder Support
Do you mean my Entity-class between the "<>"