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

I am currently trying to modify a player's movement, but so far everything I've tried has failed. Does anyone know of the preferred/suggested way to override a player's movement?

 

The closest I have gotten is EntityClientPlayerMP.addVelocity(), but it is only modifying the coordinates of the player (and also, for whatever reason, setting isAirBorne to true). I am in need of something that will modify movement relative to where the player is looking.

Remember, the changes you make have to apply to the server and to the client.  If you make changes to the server and not to the client, you will appear to be walking like normal but the server will have you registered far away, vice versa for the opposite.  The best way I approached it was apply buffs (potions) to the player as that works well for communication from Server to Client and Client to Server.

  • Author

Remember, the changes you make have to apply to the server and to the client.

 

Thank you but I am aware of this, it's not the issue. I have yet to find a way of making the player walk the way I want them to. I need something essentially like pressing WSAD keys under different conditions.

This is code I did for setting a player to a specific location. Is this what you are looking for?

 

if (!par2World.isRemote) {
        	ChunkCoordinates bedCoords = par3EntityPlayer.getBedLocation(0);
        	
        	if(bedCoords != null) {
        		if(par3EntityPlayer instanceof EntityPlayerMP) {
        			((EntityPlayerMP)par3EntityPlayer).playerNetServerHandler.setPlayerLocation(bedCoords.posX, bedCoords.posY, bedCoords.posZ, par3EntityPlayer.rotationYaw, par3EntityPlayer.rotationPitch);
        		}
        	} else {
        		par3EntityPlayer.addChatMessage("You haven't slept in a bed.");
        	}
        }

This may help you. But I was doing this in 162, dont know if there is difference.

To write a movementinput and act the movement by yourself.

But one thing is that you need to control the movement by yourself too.

It's not so smart when you want to control a player with WSAD just with code.

 

The code below is that when the player have potion 37,39 and 41, he can't move and jump.

and with potion 49, when you press W, you go backward, same with "AD".

 

public class ConfusedMovementInput extends MovementInput {

public ConfusedMovementInput(MovementInput interceptedMovementInput) {
	underlyingMovementInput = interceptedMovementInput;
	System.out.println("construct movementinput");
}

@Override
public void updatePlayerMoveState() {
	underlyingMovementInput.updatePlayerMoveState();
	EntityPlayer p = Minecraft.getMinecraft().thePlayer;
        this.jump = underlyingMovementInput.jump && 
        		    !p.isPotionActive(37) &&
        		    !p.isPotionActive(39) &&
        		    !p.isPotionActive(41);
        this.sneak = underlyingMovementInput.sneak;
        if (p.isPotionActive(37) || p.isPotionActive(39) || p.isPotionActive(41)) {
        	this.moveForward = 0;
        	this.moveStrafe = 0;
        }
        if (p.isPotionActive(49)) {
          this.moveStrafe = -underlyingMovementInput.moveStrafe;
          this.moveForward = -underlyingMovementInput.moveForward;
        } else {
          this.moveStrafe = underlyingMovementInput.moveStrafe;
          this.moveForward = underlyingMovementInput.moveForward;
        }

}

public void setConfusion(boolean newConfused) {
	confused = newConfused;
}

protected MovementInput underlyingMovementInput;
private boolean confused = false;

}

 

 

and you can replace the origin movement input somewhere in your code

    EntityClientPlayerMP player = Minecraft.getMinecraft().thePlayer;
    if (player != null) {
    	if (player.movementInput instanceof ConfusedMovementInput) {
    	} else {
    		player.movementInput = new ConfusedMovementInput(player.movementInput);
    	}
    }

  • Author

This may help you. But I was doing this in 162, dont know if there is difference.

To write a movementinput and act the movement by yourself.

 

This is exactly what I was looking for, thank you so much.

 

And thanks to everyone else for the extra bits of help

 

 

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.