Jump to content

How do I slow down a velocity jump?


BaersMakeNoiseee

Recommended Posts

This is the code i have so far:

public ItemStack onItemRightClick(ItemStack Stack, World World, EntityPlayer p) {
    p.addVelocity(0, 10, 0);
    return Stack;

I am trying to slow down when it launches the player so i can make it like the player is floating up.

What would i add?

I tried motionY, but that didn't slow it down.

 

Can anyone help me with this?

 

Link to comment
Share on other sites

Well, 10 is a HUGE amount of upward velocity.

 

To put it in context, a vanilla jump adds 0.15F, which is approximately one block height worth of upward momentum, so 10 should be about 66.67 blocks though I think it launches you even farther than that, iirc.

 

Try player.motionY += 1.0F for less of a jump, but even that won't get you a levitation-like effect. If you want a slow-moving upward trek, you have to set (not add) the player's upward motion every tick to a small positive value such as 0.1F or less.

 

You can do that either by setting a flag in your Item's enclosing ItemStack and using the Item's update tick method, or setting a flag on the player themselves and using the PlayerTickEvent.

Link to comment
Share on other sites

Well, 10 is a HUGE amount of upward velocity.

 

To put it in context, a vanilla jump adds 0.15F, which is approximately one block height worth of upward momentum, so 10 should be about 66.67 blocks though I think it launches you even farther than that, iirc.

 

Try player.motionY += 1.0F for less of a jump, but even that won't get you a levitation-like effect. If you want a slow-moving upward trek, you have to set (not add) the player's upward motion every tick to a small positive value such as 0.1F or less.

 

You can do that either by setting a flag in your Item's enclosing ItemStack and using the Item's update tick method, or setting a flag on the player themselves and using the PlayerTickEvent.

can you give me some example / pseudo code? I don't understand how i set the upward motion.
Link to comment
Share on other sites

It's pretty simple:

player.motionY = 0.1F;

So, I did it, the floating works, but that's whenever i have it in my inventory, I float. How would i add the right click method into here:

public void onUpdate(ItemStack is, World World, Entity Entity, int par, boolean par5, EntityPlayer p) {
	if (p.isAirBorne) {
		p.motionY = 0.1F;
	}
}

EDIT: Also, if you could, could you tell me how to drop the person at a specific point? Thanks.

Link to comment
Share on other sites

I already told you: store some kind of flag in the ItemStack's NBT compound onRightClick, then only apply the motionY when that flag exists. You can remove the flag at any time, too, e.g. after 10 ticks or whatever.

# onRightClick
stack.getTagCompound().setInteger("float_time", 20);

#onUpdate
NBTTagCompound tag = stack.getTagCompound();
if (tag != null && tag.getInteger("float_time") > 0) {
  tag.setInteger("float_time", tag.getInteger("float_time") - 1); // decrement float time
  player.motionY = 0.1F;
}

Link to comment
Share on other sites

I already told you: store some kind of flag in the ItemStack's NBT compound onRightClick, then only apply the motionY when that flag exists. You can remove the flag at any time, too, e.g. after 10 ticks or whatever.

# onRightClick
stack.getTagCompound().setInteger("float_time", 20);

#onUpdate
NBTTagCompound tag = stack.getTagCompound();
if (tag != null && tag.getInteger("float_time") > 0) {
  tag.setInteger("float_time", tag.getInteger("float_time") - 1); // decrement float time
  player.motionY = 0.1F;
}

crashes.

crash msg:

java.lang.NullPointerException: Unexpected error
at com.baers.test.item.ItemBalloonChest.onItemRightClick(ItemBalloonChest.java:19)
at net.minecraft.item.ItemStack.useItemRightClick(ItemStack.java:164)
at net.minecraft.client.multiplayer.PlayerControllerMP.sendUseItem(PlayerControllerMP.java:430)
at net.minecraft.client.Minecraft.func_147121_ag(Minecraft.java:1557)
at net.minecraft.client.Minecraft.runTick(Minecraft.java:2044)
at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1039)
at net.minecraft.client.Minecraft.run(Minecraft.java:962)
at net.minecraft.client.main.Main.main(Main.java:164)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)
at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
at net.minecraftforge.gradle.GradleStartCommon.launch(Unknown Source)
at GradleStart.main(Unknown Source)


A detailed walkthrough of the error, its code path and all known details is as follows:
---------------------------------------------------------------------------------------

-- Head --
Stacktrace:
at com.baers.test.item.ItemBalloonChest.onItemRightClick(ItemBalloonChest.java:19)
at net.minecraft.item.ItemStack.useItemRightClick(ItemStack.java:164)
at net.minecraft.client.multiplayer.PlayerControllerMP.sendUseItem(PlayerControllerMP.java:430)
at net.minecraft.client.Minecraft.func_147121_ag(Minecraft.java:1557)

-- Affected level --
Details:
Level name: MpServer
All players: 1 total; [EntityClientPlayerMP['Player962'/206, l='MpServer', x=-34.46, y=65.62, z=179.27]]
Chunk stats: MultiplayerChunkCache: 169, 169
Level seed: 0
Level generator: ID 00 - default, ver 1. Features enabled: false
Level generator options: 
Level spawn location: World: (-48,64,172), Chunk: (at 0,4,12 in -3,10; contains blocks -48,0,160 to -33,255,175), Region: (-1,0; contains chunks -32,0 to -1,31, blocks -512,0,0 to -1,255,511)
Level time: 101544 game time, 4535 day time
Level dimension: 0
Level storage version: 0x00000 - Unknown?
Level weather: Rain time: 0 (now: false), thunder time: 0 (now: false)
Level game mode: Game mode: creative (ID 1). Hardcore: false. Cheats: false
Forced entities: 88 total; [EntityChicken['Chicken'/128, l='MpServer', x=-23.47, y=64.00, z=125.66], EntityBat['Bat'/129, l='MpServer', x=-21.56, y=44.10, z=170.50], EntitySkeleton['Skeleton'/130, l='MpServer', x=-27.06, y=41.00, z=172.47], EntityCreeper['Creeper'/131, l='MpServer', x=-19.97, y=43.00, z=169.66], EntityZombie['Zombie'/132, l='MpServer', x=-25.66, y=44.00, z=174.50], EntityZombie['Zombie'/133, l='MpServer', x=-18.03, y=43.00, z=171.50], EntityCreeper['Creeper'/134, l='MpServer', x=-16.13, y=43.00, z=167.84], EntityBat['Bat'/135, l='MpServer', x=-24.91, y=45.92, z=168.13], EntityItem['item.item.ItemBalloonChest'/136, l='MpServer', x=-29.13, y=62.13, z=171.31], EntitySpider['Spider'/137, l='MpServer', x=-15.22, y=44.00, z=180.19], EntitySkeleton['Skeleton'/139, l='MpServer', x=-21.50, y=15.00, z=239.50], EntityZombie['Zombie'/149, l='MpServer', x=-9.84, y=31.00, z=143.38], EntityBat['Bat'/150, l='MpServer', x=2.97, y=40.02, z=145.16], EntityCreeper['Creeper'/151, l='MpServer', x=-10.63, y=32.00, z=146.50], EntitySkeleton['Skeleton'/152, l='MpServer', x=-15.50, y=25.00, z=163.50], EntitySkeleton['Skeleton'/153, l='MpServer', x=-9.72, y=43.00, z=167.97], EntityBat['Bat'/154, l='MpServer', x=5.47, y=39.36, z=172.09], EntityBat['Bat'/155, l='MpServer', x=3.25, y=39.00, z=171.50], EntityBat['Bat'/156, l='MpServer', x=2.50, y=38.82, z=165.25], EntityCreeper['Creeper'/157, l='MpServer', x=-12.50, y=47.00, z=166.50], EntityEnderman['Enderman'/285, l='MpServer', x=4.47, y=27.00, z=180.44], EntityBat['Bat'/158, l='MpServer', x=8.03, y=39.79, z=173.34], EntitySkeleton['Skeleton'/159, l='MpServer', x=-13.50, y=27.00, z=189.50], EntitySkeleton['Skeleton'/160, l='MpServer', x=-12.50, y=27.00, z=192.50], EntityEnderman['Enderman'/162, l='MpServer', x=5.56, y=22.00, z=122.50], EntityEnderman['Enderman'/163, l='MpServer', x=6.47, y=22.00, z=122.50], EntityBat['Bat'/164, l='MpServer', x=6.63, y=41.70, z=152.50], EntityCreeper['Creeper'/165, l='MpServer', x=5.91, y=27.00, z=161.69], EntitySkeleton['Skeleton'/166, l='MpServer', x=15.50, y=26.00, z=168.50], EntityBat['Bat'/167, l='MpServer', x=5.84, y=42.73, z=172.50], EntityBat['Bat'/168, l='MpServer', x=10.28, y=29.11, z=187.13], EntityZombie['Zombie'/170, l='MpServer', x=17.50, y=24.00, z=169.50], EntityCreeper['Creeper'/171, l='MpServer', x=18.41, y=25.00, z=172.00], EntityCreeper['Creeper'/172, l='MpServer', x=31.18, y=14.25, z=211.49], EntityCreeper['Creeper'/301, l='MpServer', x=14.50, y=26.00, z=171.50], EntityZombie['Zombie'/173, l='MpServer', x=29.34, y=25.00, z=225.41], EntityZombie['Zombie'/174, l='MpServer', x=28.50, y=29.00, z=244.50], EntitySkeleton['Skeleton'/175, l='MpServer', x=26.78, y=29.00, z=244.69], EntitySkeleton['Skeleton'/303, l='MpServer', x=-109.50, y=26.00, z=245.50], EntityCreeper['Creeper'/176, l='MpServer', x=43.03, y=21.00, z=220.47], EntitySkeleton['Skeleton'/177, l='MpServer', x=30.50, y=19.02, z=220.69], EntityCreeper['Creeper'/178, l='MpServer', x=31.22, y=17.00, z=219.08], EntityBat['Bat'/179, l='MpServer', x=36.38, y=28.10, z=225.25], EntityCreeper['Creeper'/62, l='MpServer', x=-98.41, y=21.00, z=110.97], EntityZombie['Zombie'/65, l='MpServer', x=-88.50, y=25.00, z=239.50], EntityCreeper['Creeper'/66, l='MpServer', x=-80.50, y=41.00, z=236.50], EntitySkeleton['Skeleton'/67, l='MpServer', x=-83.88, y=12.00, z=240.50], EntityCreeper['Creeper'/68, l='MpServer', x=-81.41, y=29.00, z=258.50], EntityCreeper['Creeper'/69, l='MpServer', x=-86.69, y=28.00, z=252.78], EntityBat['Bat'/70, l='MpServer', x=-85.41, y=23.32, z=250.97], EntityCreeper['Creeper'/77, l='MpServer', x=-66.50, y=28.00, z=122.50], EntitySheep['Sheep'/78, l='MpServer', x=-77.91, y=70.00, z=123.06], EntitySheep['Sheep'/79, l='MpServer', x=-69.56, y=70.00, z=127.97], EntityCreeper['Creeper'/80, l='MpServer', x=-79.06, y=21.00, z=243.63], EntityCreeper['Creeper'/81, l='MpServer', x=-77.13, y=23.00, z=240.13], EntitySpider['Spider'/82, l='MpServer', x=-86.13, y=21.00, z=239.50], EntityZombie['Zombie'/83, l='MpServer', x=-67.06, y=36.00, z=253.50], EntityCreeper['Creeper'/339, l='MpServer', x=3.50, y=25.00, z=171.50], EntityZombie['Zombie'/84, l='MpServer', x=-86.69, y=28.00, z=253.65], EntityClientPlayerMP['Player962'/206, l='MpServer', x=-34.46, y=65.62, z=179.27], EntitySpider['Spider'/224, l='MpServer', x=-49.50, y=32.00, z=253.50], EntitySkeleton['Skeleton'/226, l='MpServer', x=-49.50, y=32.00, z=249.50], EntityPig['Pig'/98, l='MpServer', x=-59.69, y=69.00, z=100.16], EntitySheep['Sheep'/99, l='MpServer', x=-51.09, y=65.00, z=111.47], EntityCreeper['Creeper'/100, l='MpServer', x=-63.50, y=21.00, z=246.50], EntityCreeper['Creeper'/101, l='MpServer', x=-60.50, y=21.00, z=248.50], EntityCreeper['Creeper'/102, l='MpServer', x=-61.50, y=21.00, z=250.50], EntityBat['Bat'/103, l='MpServer', x=-51.09, y=16.79, z=251.56], EntityZombie['Zombie'/104, l='MpServer', x=-58.50, y=36.00, z=252.50], EntityCreeper['Creeper'/360, l='MpServer', x=2.50, y=44.00, z=133.50], EntityZombie['Zombie'/105, l='MpServer', x=-57.50, y=36.00, z=253.50], EntityZombie['Zombie'/106, l='MpServer', x=-59.50, y=36.00, z=254.50], EntityCow['Cow'/113, l='MpServer', x=-37.78, y=64.00, z=102.25], EntitySkeleton['Skeleton'/370, l='MpServer', x=-59.50, y=16.00, z=249.50], EntityPig['Pig'/114, l='MpServer', x=-43.50, y=67.00, z=99.47], EntityChicken['Chicken'/115, l='MpServer', x=-44.44, y=64.00, z=116.53], EntitySkeleton['Skeleton'/371, l='MpServer', x=-55.50, y=16.00, z=249.50], EntityPig['Pig'/116, l='MpServer', x=-39.13, y=64.00, z=123.94], EntitySkeleton['Skeleton'/372, l='MpServer', x=-54.50, y=16.00, z=250.50], EntityPig['Pig'/117, l='MpServer', x=-37.84, y=64.00, z=137.13], EntityBat['Bat'/118, l='MpServer', x=-21.53, y=32.32, z=149.63], EntityBat['Bat'/119, l='MpServer', x=-36.34, y=47.10, z=165.75], EntityCreeper['Creeper'/248, l='MpServer', x=-68.50, y=23.00, z=229.50], EntityCreeper['Creeper'/124, l='MpServer', x=-24.44, y=26.00, z=115.06], EntityCreeper['Creeper'/125, l='MpServer', x=-25.50, y=24.00, z=110.50], EntitySheep['Sheep'/126, l='MpServer', x=-23.34, y=64.00, z=124.69], EntityChicken['Chicken'/127, l='MpServer', x=-29.53, y=64.00, z=120.44], EntitySkeleton['Skeleton'/383, l='MpServer', x=-100.50, y=21.00, z=101.50]]
Retry entities: 0 total; []
Server brand: fml,forge
Server type: Integrated singleplayer server
Stacktrace:
at net.minecraft.client.multiplayer.WorldClient.addWorldInfoToCrashReport(WorldClient.java:415)
at net.minecraft.client.Minecraft.addGraphicsAndWorldToCrashReport(Minecraft.java:2566)
at net.minecraft.client.Minecraft.run(Minecraft.java:991)
at net.minecraft.client.main.Main.main(Main.java:164)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)
at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
at net.minecraftforge.gradle.GradleStartCommon.launch(Unknown Source)
at GradleStart.main(Unknown Source)

-- System Details --
Details:
Minecraft Version: 1.7.10
Operating System: Windows 10 (amd64) version 10.0
Java Version: 1.8.0_73, Oracle Corporation
Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
Memory: 722125696 bytes (688 MB) / 1038876672 bytes (990 MB) up to 1038876672 bytes (990 MB)
JVM Flags: 3 total; -Xincgc -Xmx1024M -Xms1024M
AABB Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
IntCache: cache: 0, tcache: 0, allocated: 13, tallocated: 95
FML: MCP v9.05 FML v7.10.99.99 Minecraft Forge 10.13.4.1558 4 mods loaded, 4 mods active
States: 'U' = Unloaded 'L' = Loaded 'C' = Constructed 'H' = Pre-initialized 'I' = Initialized 'J' = Post-initialized 'A' = Available 'D' = Disabled 'E' = Errored
UCHIJAAAA	mcp{9.05} [Minecraft Coder Pack] (minecraft.jar) 
UCHIJAAAA	FML{7.10.99.99} [Forge Mod Loader] (forgeSrc-1.7.10-10.13.4.1558-1.7.10.jar) 
UCHIJAAAA	Forge{10.13.4.1558} [Minecraft Forge] (forgeSrc-1.7.10-10.13.4.1558-1.7.10.jar) 
UCHIJAAAA	tm{1.0} [TestMod] (bin) 
GL info: ' Vendor: 'Intel' Version: '4.3.0 - Build 10.18.15.4248' Renderer: 'Intel(R) HD Graphics 4400'
Launched Version: 1.7.10
LWJGL: 2.9.1
OpenGL: Intel(R) HD Graphics 4400 GL version 4.3.0 - Build 10.18.15.4248, Intel
GL Caps: Using GL 1.3 multitexturing.
Using framebuffer objects because OpenGL 3.0 is supported and separate blending is supported.
Anisotropic filtering is supported and maximum anisotropy is 16.
Shaders are available because OpenGL 2.1 is supported.

Is Modded: Definitely; Client brand changed to 'fml,forge'
Type: Client (map_client.txt)
Resource Packs: []
Current Language: English (US)
Profiler Position: N/A (disabled)
Vec3 Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
Anisotropic Filtering: Off (1)

Link to comment
Share on other sites

Yeah, of course it crashes. You copied and pasted code that crashes. Don't do that.

 

Read the code, read the crash report, and figure out why the code as written is crashing (hint: ItemStack's nbt tag is usually null). If you don't know how to handle the case where a field might be null, I suggest you take some time to learn up on basic programming skills.

Link to comment
Share on other sites

Yeah, of course it crashes. You copied and pasted code that crashes. Don't do that.

 

Read the code, read the crash report, and figure out why the code as written is crashing (hint: ItemStack's nbt tag is usually null). If you don't know how to handle the case where a field might be null, I suggest you take some time to learn up on basic programming skills.

Can you please tell me what certain parts of the code do? I think i would understand better if you actually explained what parts of the code are.

Link to comment
Share on other sites

Null error exceptions are ready to fix. He even told you what object is null.

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

Yeah, of course it crashes. You copied and pasted code that crashes. Don't do that.

 

Read the code, read the crash report, and figure out why the code as written is crashing (hint: ItemStack's nbt tag is usually null). If you don't know how to handle the case where a field might be null, I suggest you take some time to learn up on basic programming skills.

I tried changing it, but it didn't work.

public ItemStack onItemRightClick(ItemStack Stack, World World, EntityPlayer p) {
	Stack.getTagCompound().setInteger("float_time", 20);
	return Stack;
}

@SuppressWarnings("null")
public void onUpdate(ItemStack Stack, World World, Entity p, int par4, boolean par5) {
	NBTTagCompound tag = Stack.getTagCompound();
	if (tag == null && tag.getInteger("float_time") > 0) {
	  tag.setInteger("float_time", tag.getInteger("float_time") - 1); // decrement float time
	  p.motionY = 0.1F;
	}
}
}

 

Link to comment
Share on other sites

@SuppressWarnings("null")

 

...really?

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

Please, READ the crash log. Actually read it. Find the line that says something like "Caused by... at line xyz". Now compare that line number to the line numbers of the method you are trying to fix. Hm, not the same, are they?

 

And please, take a few hours of your time and learn a little about Java. Search 'Java check for null' or 'Java null pointer exception' and surely you will find a solution.

 

Or even just READ the code I wrote. Seriously, the solution is already there in one of the examples. Null check. Check for null. If null don't try to use the null to do stuff. Phrased another way, if not null, do stuff.

 

We're not trying to be mean, but you need to show that you are putting in some effort.

Link to comment
Share on other sites

can you please give me information instead of just saying things that doesn't help me in the slightest.

 

Please go into your airplane and flip the red lever.

 

 

 

This is equivalent to what you're asking java to do and it's telling you it doesn't own a god damn airplane.  Your "suppress warnings" is you telling it to shut the fuck up, rather than buying an airplane.

 

 

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

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.



×
×
  • Create New...

Important Information

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