Posted August 2, 20187 yr I want to make a mod that will allow me to sprint whenever hit and walk a few blocks in a direction. I looked in the code but I can't see how the sprinting is activated/works. Here's what I tried: player.setSprinting(true); player.movementInput.forwardKeyDown=true; player.movementInput.moveForward=1.0F; player.moveForward=1.0F; In OnLivingUpdate the "this.movementInput.updatePlayerMoveState()" function is called which syncs with the keyboard. I thought this might simulate a keypress-it did not. Then I tried with travel: float forward=1.0F; if(dy>0) player.jump(); if(dist<0.21D) { forward=(float) (dist/0.21); } if(!player.isSprinting()) { player.movementInput.forwardKeyDown=true; player.setSprinting(true); } player.travel(0,0,forward); I noticed travel will not accept values over 1-it will round them up(with some friction calculation); I also noticed the distance at which the player moves using travel is around 0.21(on stone-on other blocks definitly will be different). Now , what is the connection between player.moveForward and player.motion[x,y,z] (motion seems to work- I know they are in different axis systems/views)? The second code works when local playing but fails on any other server I connect to (the server makes some checks). Why can't I fool the servers? The FOV changes for a few seconds but then it resets. I tried both codes in onPlayerTick and onLivingUpdate. Another thing: it works...sometimes..... on other servers if I guess the right number of ticks between travel calls. Why? If I hold a key pressed then travel should be called at every tick...why does my code have to skip a few? The mod is client side only. Edited August 2, 20187 yr by Antonii
August 2, 20187 yr Author I think I got it...the moveforward was resetted: public void updatePlayerMoveState() { this.moveStrafe = 0.0F; this.moveForward = 0.0F; if (this.gameSettings.keyBindForward.isKeyDown()) { ++this.moveForward; this.forwardKeyDown = true; } else { this.forwardKeyDown = false; } if (this.gameSettings.keyBindBack.isKeyDown()) { --this.moveForward; this.backKeyDown = true; } else { this.backKeyDown = false; } if (this.gameSettings.keyBindLeft.isKeyDown()) { ++this.moveStrafe; this.leftKeyDown = true; } else { this.leftKeyDown = false; } if (this.gameSettings.keyBindRight.isKeyDown()) { --this.moveStrafe; this.rightKeyDown = true; } else { this.rightKeyDown = false; } this.jump = this.gameSettings.keyBindJump.isKeyDown(); this.sneak = this.gameSettings.keyBindSneak.isKeyDown(); if (this.sneak) { this.moveStrafe = (float)((double)this.moveStrafe * 0.3D); this.moveForward = (float)((double)this.moveForward * 0.3D); } }
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.