Posted August 2, 201411 yr 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!
August 2, 201411 yr player. posX, player.posY and player.posZ is the position you are currently standing. Look at this: http://www.minecraftforge.net/forum/index.php?topic=2050.0 Here could be your advertisement!
August 2, 201411 yr Author 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!
August 3, 201411 yr 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. Currently updating my Mod to 1.10.2 https://bitbucket.org/hugo_the_dwarf/riseoftristram2016/src?at=master
August 3, 201411 yr 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.
August 3, 201411 yr Author 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 Thanks you all for your support! ~MineLoad I doesnt Mine I only Loading!
August 3, 201411 yr Author 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!
August 3, 201411 yr 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!
August 3, 201411 yr Author 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!
August 3, 201411 yr 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 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!
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.