Posted January 20, 20205 yr I am using the event.getWorld().getBiome() method for RightClickItem Event. It takes a position as a parameter. If I use event.getPos() I get the position the player is standing in, but I want the position of the block being targeted, if possible. - Thanks. Edited January 26, 20205 yr by MineModder2000
January 20, 20205 yr If you are trying to get the position of a block outside of the reach distance, you need to perform a raytrace to find that block position.
January 21, 20205 yr Author 15 hours ago, diesieben07 said: RightClickItem is specifically for the case where no block is targeted. Use RightClickBlock for the case where a block is right-clicked. I should've specified, I want this check to happen when the player is holding an item, so the RightClickItem event is what I want cancelled when the block is in the wrong biome. It actually doesn't work that bad the way I have it, it would just be better if it was based on the targeted block rather than the block the player is on.
January 21, 20205 yr You can use Minecraft#objectMouseOver. You can also look at the ray trading that the debug overlay does to show you your targeted block and block (at a surprisingly far range) About Me Spoiler My Discord - Cadiboo#8887 My Website - Cadiboo.github.io My Mods - Cadiboo.github.io/projects My Tutorials - Cadiboo.github.io/tutorials Versions below 1.14.4 are no longer supported on this forum. Use the latest version to receive support. When asking support remember to include all relevant log files (logs are found in .minecraft/logs/), code if applicable and screenshots if possible. Only download mods from trusted sites like CurseForge (minecraft.curseforge.com). A list of bad sites can be found here, with more information available at stopmodreposts.org Edit your own signature at www.minecraftforge.net/forum/settings/signature/ (Make sure to check its compatibility with the Dark Theme)
January 21, 20205 yr Author Okay so the BlockRayTraceResult constructor takes the following : Vec3d, Direction, BlockPos, Boolean. I think I got the correct Vec3d and Direction, but I am not sure how to get the targeted Block, so I can get it's position. @SuppressWarnings("deprecation") @SubscribeEvent public void rightClickItem(RightClickItem event) { BlockRayTraceResult result; result = new BlockRayTraceResult(event.getEntityPlayer().getLookVec(), event.getFace(), event.getPos(), false); if ((event.getEntityPlayer().getHeldItemMainhand().getItem() == Items.GLASS_BOTTLE || event.getEntityPlayer().getHeldItemMainhand().getItem() == Items.WATER_BUCKET) && (!event.getWorld().getBiome(result.getPos()).toString().contains("River"))) { event.setCanceled(true); } }
January 21, 20205 yr ...You have to run a ray trace. Take the existing client side code, copy it, and put it where you need it (common code). 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.
January 21, 20205 yr I'm not sure what you need docs for to copy-paste a function. 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.
January 21, 20205 yr Author 52 minutes ago, Draco18s said: I'm not sure what you need docs for to copy-paste a function. I don't understand what function, what existing client side code? What does running a ray trace mean? Edited January 21, 20205 yr by MineModder2000
January 21, 20205 yr Some examples of code that do raytracing: - debug overlay’s targeted block - throwable entity’s update code (before it calls onImpact) - Minecraft’s code that’s sets objectMouseOver About Me Spoiler My Discord - Cadiboo#8887 My Website - Cadiboo.github.io My Mods - Cadiboo.github.io/projects My Tutorials - Cadiboo.github.io/tutorials Versions below 1.14.4 are no longer supported on this forum. Use the latest version to receive support. When asking support remember to include all relevant log files (logs are found in .minecraft/logs/), code if applicable and screenshots if possible. Only download mods from trusted sites like CurseForge (minecraft.curseforge.com). A list of bad sites can be found here, with more information available at stopmodreposts.org Edit your own signature at www.minecraftforge.net/forum/settings/signature/ (Make sure to check its compatibility with the Dark Theme)
January 22, 20205 yr 1 hour ago, MineModder2000 said: what existing client side code? This: 12 hours ago, Cadiboo said: Minecraft#objectMouseOver. 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.
January 22, 20205 yr Author 47 minutes ago, Draco18s said: This: if (this.leftClickCounter <= 0 && !this.player.isHandActive()) { if (leftClick && this.objectMouseOver != null && this.objectMouseOver.getType() == RayTraceResult.Type.BLOCK) { BlockRayTraceResult blockraytraceresult = (BlockRayTraceResult)this.objectMouseOver; BlockPos blockpos = blockraytraceresult.getPos(); if (!this.world.isAirBlock(blockpos)) { Direction direction = blockraytraceresult.getFace(); if (this.playerController.onPlayerDamageBlock(blockpos, direction)) { this.particles.addBlockHitEffects(blockpos, blockraytraceresult); this.player.swingArm(Hand.MAIN_HAND); I don't understand this code, objectMouseOver is not set anywhere in the class, so how is it being used?
January 22, 20205 yr Author 1 hour ago, Cadiboo said: Some examples of code that do raytracing: - debug overlay’s targeted block - throwable entity’s update code (before it calls onImpact) - Minecraft’s code that’s sets objectMouseOver I tried to implement the code from debug overlay : RayTraceResult result; BlockPos blockpos = null; result = event.getPlayer().func_213324_a(20.0D, 0.0F, true); if (result.getType() == RayTraceResult.Type.BLOCK) { blockpos = ((BlockRayTraceResult)result).getPos(); } if ((event.getPlayer().getHeldItemMainhand().getItem() == Items.GLASS_BOTTLE || event.getPlayer().getHeldItemMainhand().getItem() == Items.WATER_BUCKET) && (!event.getWorld().getBiome(blockpos).toString().contains("River"))) { event.setCanceled(true); } But its still going by the block that the player is standing on, not looking at.
January 24, 20205 yr On 1/22/2020 at 1:19 AM, MineModder2000 said: its still going by the block that the player is standing on Are you sure that you are getting the correct BlockPos? You are searching with up to a 20 block range. What happens if the BlockPos is null?
January 25, 20205 yr Author 11 hours ago, Alpvax said: Are you sure that you are getting the correct BlockPos? You are searching with up to a 20 block range. What happens if the BlockPos is null? As stated it's fetching the position of the block that the player is standing on. If it's null the game crashes.
January 25, 20205 yr 1 hour ago, MineModder2000 said: If it's null the game crashes. You should fix that. 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.
January 25, 20205 yr Author 48 minutes ago, Draco18s said: You should fix that. Well it's never naturally null, that's only if I comment out the code that sets it. The bigger problem is getting the blockPos of the block the player is looking at.
January 25, 20205 yr 1 hour ago, MineModder2000 said: Well it's never naturally null What if you’re not looking at a block... About Me Spoiler My Discord - Cadiboo#8887 My Website - Cadiboo.github.io My Mods - Cadiboo.github.io/projects My Tutorials - Cadiboo.github.io/tutorials Versions below 1.14.4 are no longer supported on this forum. Use the latest version to receive support. When asking support remember to include all relevant log files (logs are found in .minecraft/logs/), code if applicable and screenshots if possible. Only download mods from trusted sites like CurseForge (minecraft.curseforge.com). A list of bad sites can be found here, with more information available at stopmodreposts.org Edit your own signature at www.minecraftforge.net/forum/settings/signature/ (Make sure to check its compatibility with the Dark Theme)
January 25, 20205 yr Author 16 hours ago, Cadiboo said: What if you’re not looking at a block... The code isn't working as intended, it's going by the block the player is standing on not looking at.
January 25, 20205 yr Author 18 hours ago, herasswideopen said: I suggest going to the DrawBlockHighlightEvent class, seeing where it is triggered, and checking if the blockpos is there I love you, didn't know this event existed, but it's definitely the right one, thanks. PS : Interesting username....
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.