Jump to content

[1.11.2] Removing creative flying 'drift'?


Isabellav253

Recommended Posts

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.

 

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • Right now im trying to make an own mod for minecraft for the version 1.16.5 with forge but whatever i do it still doesnt fix the error this is my build.gradle : buildscript { repositories { maven { url = "https://maven.minecraftforge.net" } mavenCentral() } dependencies { classpath 'net.minecraftforge.gradle:ForgeGradle:5.1.+' } } apply plugin: 'net.minecraftforge.gradle' apply plugin: 'java' group = 'com.example' // Modify to your package name version = '1.0' archivesBaseName = 'flippermod' java { toolchain { languageVersion = JavaLanguageVersion.of(8) } } minecraft { version = "1.16.5-36.2.42" // Ensure this matches your Forge version mappings channel: 'official', version: '1.16.5' runs { client { workingDirectory project.file('run') property 'forge.logging.markers', 'SCAN,REGISTRIES,REGISTRYDUMP' property 'forge.logging.console.level', 'debug' mods { flipper_mod { sourceSets.main.output } } } } } repositories { maven { url = "https://maven.minecraftforge.net/" } mavenCentral() } dependencies { minecraft "net.minecraftforge:forge:1.16.5-36.2.42" } and this one is my settings.gradle:  pluginManagement { repositories { gradlePluginPortal() maven { name = 'MinecraftForge' url = 'https://maven.minecraftforge.net/' } } } plugins { id 'org.gradle.toolchains.foojay-resolver-convention' version '0.7.0' } rootProject.name = 'flippermod' this one is the mods.tml    modLoader="javafml" loaderVersion="[36,)" modId="flippermod" version="1.0.0" displayName="Flippermod" and the last one is the gradle-wrapper.properties distributionUrl=https\://services.gradle.org/distributions/gradle-7.6-bin.zip dc :"code_slivki"
    • Today I tried downloading 1.16.5 forge (the recommended version) and when installing I selected "download client". At the end just before appeared "These libraries failed to download. Try again." and at the bottom there were "org.apache.logging.log4j:log4j-api:2.15.0 ; org.apache.logging.log4j:log4j-core:2.15.0 and org.apache.logging.log4j:log4j-slf4j18-impl2.15.0" I tried the newest version and the same thing appeared
    • I think the problem is the server doesn't have enough ram, but I need to be sure before buying more. The modpack I use is Craft of exile 2 and the server has 4gb ram. When I try to turn it on I get a bunch of warns and at the end it just says "[Multicraft] Skipped 564 lines due to rate limit (160/s)" Is there a way to increase the rate limit? One time it did start, but without half of the mods. The modpack works perfectly fine on my computer even if I have the launch ram limit to 4gb.
    • Nevermind, RedstoneWireBlock.java had what I needed. Surprised I didn't try looking there until now.
    • I tried to open my Minecraft world normally and got the error "Errors in currently selected data pacts prevented the world from loading." Trying to start in safe mode gives the error "This world contains invalid or corrupted save data." My recent log is too large to make a Pastebin link. Any help would be much appreciated. 
  • Topics

×
×
  • Create New...

Important Information

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