Jump to content
View in the app

A better way to browse. Learn more.

Forge Forums

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Featured Replies

Posted

TL;DR - Where's the code for the 'flying drift' in creative mode?

 

I'm relatively new to modding and have been trying to make a simple mod which removes the 'drift' motion when flying in creative mode (like when you walk on ice). (makes the game unplayable for me due to motion sickness).

I'm using Eclipse & have been looking extensively but can't seem to find the code that controls this 'drift'.

Would love some help on this.

 

That is hardcoded in the way entities move. Basically while the player holds a movement button their motion gets set to a specific amount. As the button is released the motion gradually decreases by something like motionX *= 0.9 in the onUpdate method.

You can however easily disable the 'drift' effect as you call it. Create an eventhandler that will handle client player's tick(or a client tick), check if the player is in creative and is flying, check that none of movement keys are pressed (you can get them in GameSettings which you can obtain from a Minecraft instance), and if all conditions are met simply set motionX and motionZ to 0.

  • Author
8 hours ago, V0idWa1k3r said:

That is hardcoded in the way entities move. Basically while the player holds a movement button their motion gets set to a specific amount. As the button is released the motion gradually decreases by something like motionX *= 0.9 in the onUpdate method.

You can however easily disable the 'drift' effect as you call it. Create an eventhandler that will handle client player's tick(or a client tick), check if the player is in creative and is flying, check that none of movement keys are pressed (you can get them in GameSettings which you can obtain from a Minecraft instance), and if all conditions are met simply set motionX and motionZ to 0.

That sounds like it would work.
I've been looking at tutorials for ~3 hours now and can't figure out where to put what code.
I've got a working mod that doesn't do anything yet - have attached what i think? is relevent?

Do you know of any good tutorials for creating events? Been using https://bedrockminer.jimdo.com/modding-tutorials/advanced-modding/event-handler/ but can't find what to put in my own code.

I'm totally lost haha.

 

Capture.JPG

  • Author

This is the progress I've got so far - on the right track?

 

Need to find how to ask it to check whether creative mode (isCreative) ? and check if flying and check if movement keys not pressed.

And to find out how to actually set movement to 0 - I've been looking for this in Entity.class - public double motionX and public double motionZ i think?

 

And I thought this would be simple xD

Mod Total.JPG

Mod Event.JPG

Yes, you are on the right track. In fact, you have mostly described how to do it already ;)

You can check for creative mod in EntityPlayer.capabilities field. There are all kinds of fields in there - isFlying, isCreativeMode and others.

Just do not forget that ClientTickEvent is fired every client tick, including ticks where the player does not exist yes(ex. main menu screen) so you will need to check for that (player != null).

  • Author

Thanks!
I'm still trying to figure out how to set movement to 0 - I think I'm on the right track here using setVelocity - I half-copied this from Entity.class

It keeps telling me that "void is an invalid type for the variable setVelocity", although this is exactly how it's written in Entity.class.

I'm not sure how to fix this invalid type issue?

Mod Event setvelocity.JPG

  • The motionX and motionZ fields you delcare in your event handler will have no effect on the player.
  • You can't declare a method inside another method.
  • Even if you moved that method out on its own, it's completely invalid - method parameters go in brackets.

These are pretty basic Java issues. I'd recommend you learn some Java fundamentals or you will struggle with modding.

Edited by Jay Avery

  • Author

Thanks for your help everyone, unfortunately it seems I am way out of my depth so I'll just hope someone else makes this mod one day.

Edited by Isabellav253

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...

Important Information

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

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.