Posted July 20, 20205 yr Hello there, so I tried making a falling block that falls up. So I made a new entity that extends FallingBlockEntity and I overwrited a method in the constructor to change the motion of the entity. I tried changing values to their negative equivalent and multipliying them by -1 but none worked. package com.maxandcarl.inan.entities; import net.minecraft.block.BlockState; import net.minecraft.entity.EntityType; import net.minecraft.entity.item.FallingBlockEntity; import net.minecraft.world.World; public class EndGravelBlockEntity extends FallingBlockEntity{ public EndGravelBlockEntity(World worldIn, double x, double y, double z, BlockState fallingBlockState) { super(worldIn, x, y, z, fallingBlockState); this.setPosition(x, y + (double)((1.0F - this.getHeight()) /2.0F) * -1, z); } public EndGravelBlockEntity(EntityType<? extends FallingBlockEntity> type, World worldIn) { super(type, worldIn); } } Help please. Is gravity linked directly to this function for falling blocks or is it something else that applies to every entity that I have to change?
July 20, 20205 yr 43 minutes ago, MaxAnimator said: Is gravity linked directly to this function for falling blocks or is it something else that applies to every entity that I have to change? Gravity is a myth for the basic Entity class. Give it some velocity and it'll start moving in the direction you want. Probably should use Entity::setMotion and some Vector3d::add. You also might want to override the tick method.
July 20, 20205 yr Also you may need to disable gravity with Entity#setNoGravity, so you could ignore stock gravity applied to FallingBlockEntity, Everything said above may be absolutely wrong. No rights reserved.
August 4, 20205 yr Author Hello again, after a long time I got back onto this issue. I tried many things, and currently I found this function "this.setMotion(this.getMotion().add(0.0D, 0.08D, 0.0D));". But it still doesnt work, the entity just doesnt move and stays in air. Yes I tried changing the value to see if it was counter balanced by another use of this function in the code, but still nothing. package com.maxandcarl.inan.entities; import net.minecraft.entity.EntityType; import net.minecraft.entity.item.FallingBlockEntity; import net.minecraft.world.World; public class EndGravelBlockEntity extends FallingBlockEntity{ @Override public void tick() { this.setMotion(this.getMotion().add(0.0D, 0.08D, 0.0D)); } public EndGravelBlockEntity(EntityType<? extends FallingBlockEntity> type, World worldIn) { super(type, worldIn); } } Edited August 4, 20205 yr by MaxAnimator added code
August 4, 20205 yr 4 hours ago, MaxAnimator said: But it still doesnt work, the entity just doesnt move and stays in air You should add a call to super.tick() in your tick method (or at least a call to this.move()).
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.