Jump to content

Teleportation Staff? [(Un)Solved]


MineLoad

Recommended Posts

Hi Forge-Modder & Co.

I have a problem because I will make a teleport staff, but if i teleport me it teleport me to myself and it should teleport me a few blocks in viewing direction...

And can i make that the Staff has durability?

I hope you can answer me, thanks in advanced ~ML

Here is my code:

 

@Override
public ItemStack onItemRightClick(ItemStack itemstack, World world, EntityPlayer player)
{

	player.setPositionAndUpdate(player.posX , player.posY , player.posZ);
	return super.onItemRightClick(itemstack, world, player);
}

I doesnt Mine I only Loading!

Link to comment
Share on other sites

Ok thanks, now I can teleport me with the staff, but the staff doesn't take damage, I have find a command but it doesent work :/

My code:

 

	@Override

    public ItemStack onItemRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer player)
    {
    	if(Minecraft.getMinecraft().objectMouseOver!=null)
    	{
    		int xm=Minecraft.getMinecraft().objectMouseOver.blockX;
    		int ym=Minecraft.getMinecraft().objectMouseOver.blockY;
    		int zm=Minecraft.getMinecraft().objectMouseOver.blockZ;   		
    	
    		player.setPositionAndUpdate(xm, ym, zm);
    		player.fallDistance=0F;
    		par1ItemStack.damageItem(1, player); //with this command it should be take damage 
    	}

    	return par1ItemStack;
    }

I doesnt Mine I only Loading!

Link to comment
Share on other sites

Give it a max damge "setMaxDamage(int);" I think if you extend the Tool class you can use the method "damageItem" if not you might have to make your own public method that does that for you something like:

 

public void damageItem(Itemstack is, int dmg)
{
   setDamage(is, is.getDamage(is) - dmg);
}

 

then in your method you'd have:

	@Override

    public ItemStack onItemRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer player)
    {
    	if(Minecraft.getMinecraft().objectMouseOver!=null)
    	{
    		int xm=Minecraft.getMinecraft().objectMouseOver.blockX;
    		int ym=Minecraft.getMinecraft().objectMouseOver.blockY;
    		int zm=Minecraft.getMinecraft().objectMouseOver.blockZ;   		
    	
    		player.setPositionAndUpdate(xm, ym, zm);
    		player.fallDistance=0F;
    		//par1ItemStack.damageItem(1, player); //with this command it should be take damage 
                damageItem(par1ItemStack,1);
    	}

    	return par1ItemStack;
    }

 

Of course in the end all you probably need is a maxDamage on your item if you haven't set that yet.

 

Link to comment
Share on other sites

That's weird that par1ItemStack.damageItem(1, player); doesn't damage the item, it works for me in 1.7.10.

Have you done setMaxDamage(n) at the beginning of the item class?

Also, what version of Minecraft are you modding? I don't know if they changed the way that you damage items between 1.6 - 1.7 but it might have something to do with it.

Link to comment
Share on other sites

That's weird that par1ItemStack.damageItem(1, player); doesn't damage the item, it works for me in 1.7.10.

Have you done setMaxDamage(n) at the beginning of the item class?

Also, what version of Minecraft are you modding? I don't know if they changed the way that you damage items between 1.6 - 1.7 but it might have something to do with it.

I had forget setMaxDamage() , now its going  :D

Thanks you all for your support!

~MineLoad

I doesnt Mine I only Loading!

Link to comment
Share on other sites

Your code will cause crash on server. Minecraft class is client-side only.

How can I edit the code , so that it doesn't crash on Server, so what command?

I hope you can answer me, thanks in advanced!

~MineLoad

I doesnt Mine I only Loading!

Link to comment
Share on other sites

You will have to send a packet containing the xm, ym and zm to the server so that the tp is executed at the server.

Google "forge 1.7 netty tutorial".

 

However, keep in mind that this could be a possible exploit for Hackers. You should check if its actually possible to that position.(range, can the player really see that position,...)

Here could be your advertisement!

Link to comment
Share on other sites

You will have to send a packet containing the xm, ym and zm to the server so that the tp is executed at the server.

Google "forge 1.7 netty tutorial".

 

However, keep in mind that this could be a possible exploit for Hackers. You should check if its actually possible to that position.(range, can the player really see that position,...)

I do not quite understand because I doesn't speak english so good...

can anyone give me a short tutorial to this? Or gives it a german tutorial, because I doesn't find anyone?

I hope you can answer me, thanks in advance!

~MineLoad

I doesnt Mine I only Loading!

Link to comment
Share on other sites

I do not quite understand because I doesn't speak english so good...

can anyone give me a short tutorial to this? Or gives it a german tutorial, because I doesn't find anyone?

I hope you can answer me, thanks in advance!

~MineLoad

Lol, ich auch :D

 

Until now i always managed to avoid packets and used workarounds. maybe its possible to get the Block the player is looking at on the server side without packets.

But i don't know how you would do that, sry.

Here could be your advertisement!

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



×
×
  • Create New...

Important Information

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