MineLoad Posted August 2, 2014 Posted August 2, 2014 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); } Quote I doesnt Mine I only Loading!
Jacky2611 Posted August 2, 2014 Posted August 2, 2014 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 Quote Here could be your advertisement!
MineLoad Posted August 2, 2014 Author Posted August 2, 2014 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; } Quote I doesnt Mine I only Loading!
hugo_the_dwarf Posted August 3, 2014 Posted August 3, 2014 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. Quote Currently updating my Mod to 1.10.2 https://bitbucket.org/hugo_the_dwarf/riseoftristram2016/src?at=master
Toastrackenigma Posted August 3, 2014 Posted August 3, 2014 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. Quote
MineLoad Posted August 3, 2014 Author Posted August 3, 2014 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 Quote I doesnt Mine I only Loading!
MultiMote Posted August 3, 2014 Posted August 3, 2014 Your code will cause crash on server. Minecraft class is client-side only. Quote
MineLoad Posted August 3, 2014 Author Posted August 3, 2014 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 Quote I doesnt Mine I only Loading!
Jacky2611 Posted August 3, 2014 Posted August 3, 2014 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,...) Quote Here could be your advertisement!
MineLoad Posted August 3, 2014 Author Posted August 3, 2014 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 Quote I doesnt Mine I only Loading!
Jacky2611 Posted August 3, 2014 Posted August 3, 2014 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. Quote Here could be your advertisement!
Recommended Posts
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.