Jump to content

Change Block gravity?


deantonious

Recommended Posts

Hi, I'm trying to change the gravity aceleration in minecraft. I have been looking for the class were I could change it, but I dindn't find anything... If it's not posible to change all the gravity in minecraft, maybe it's posible to change it in just one block?

 

Thanks

Twitter: @deantonious || TeamSpeak Server: ts3.deantonious.es

Link to comment
Share on other sites

Gravity is not a globally referenced variable.  Every entity handles its own downward movement and acceleration.

(Blocks do not obey gravity, in any way, what so ever.  "But sand and gravel!" you say.  "Entities.  EntityFallingSand.  Not a block" I reply.)

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Link to comment
Share on other sites

ASM or Reflections.

 

Or base class editing.

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Link to comment
Share on other sites

You could get the gravitational acceleration of every entity in the world by getting every entity in the world World#loadedEntityList. Then you get the entity type and create a fake entity of the same type you can then test on. Call Entity#onUpdate() on it and look at the motionY. That motion is it's gravitational acceleration (as no other forces apply except air drag, which is handled before the acceleration so that will have no effect). You now have the acceleration of that entity. If you want to make the entity have half the acceleration you can do Entity#motionY = -acceleration * 0.5D every tick.

 

I haven't tested this and this is quite resource intensive (as it will create a fake Entity object for every Entity every tick). This is a base concept though, and there are ways to make it more efficient (storing the accelerations of all the types of entities instead of recalculating them again and again).

Author of PneumaticCraft, MineChess, Minesweeper Mod and Sokoban Mod. Visit www.minemaarten.com to take a look at them.

Link to comment
Share on other sites

Well, then you could choose an Entity you want to perform the changes to, lets say the EntityItem. So I go to net.minecraft.entity.item.EntityItem.java.

 

On line 111 of the onUpdate() method you can see:

this.motionY -= 0.03999999910593033D;

Which is the gravity being applied to the entity, it appears to be 0.4 m/tick². If you look further in the method you see (from line 132) :

 float f = 0.98F;
(...)
this.motionX *= (double)f;
this.motionY *= 0.9800000190734863D;
this.motionZ *= (double)f;

Which is the air drag being applied. Every tick the entity loses 2% of its velocity. The code in the (...) handles the difference in slipperyness of blocks (and only applies to the X and Z motion).

 

So if you're not planning on releasing any mod, you can just change these parameters.

Author of PneumaticCraft, MineChess, Minesweeper Mod and Sokoban Mod. Visit www.minemaarten.com to take a look at them.

Link to comment
Share on other sites

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.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Announcements



×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.