Posted November 25, 20186 yr I'm trying to get the potion effect attached to a tipped arrow upon impact, but I'm running into two weird, possibly related issues. The first is that all arrows, tipped are not, turn into tipped arrows when fired, with regular arrows giving off blue particles. Second, the nbt tag is completely blank when I read it. Code: https://pastebin.com/9ezTvh70
November 25, 20186 yr 17 minutes ago, theishiopian said: The first is that all arrows, tipped are not, turn into tipped arrows when fired, with regular arrows giving off blue particles. https://bugs.mojang.com/browse/MC-107941 18 minutes ago, theishiopian said: Second, the nbt tag is completely blank when I read it. You are doing everything you could do completely wrong. First of all Entity#readEntityFromNBT deserializes the entity in question from the NBT provided. The NBT won't change, since the entity is reading from it, not writing into it. Finally you don't need to mess with NBT at all. Check if the arrow is an instance of EntityTippedArrow(hint: you are already doing it), cast it to one and obtain the potion effect from said arrow. Use reflection if you have to.
November 25, 20186 yr Author I tried using reflection initially, but it didnt work when the mod was built. Additionally, when checking whether the arrow is an instance of EntityTippedArrow, it always returns true, regardless of whether the arrow is tipped or not.
November 25, 20186 yr 6 minutes ago, theishiopian said: I tried using reflection initially, but it didnt work when the mod was built. Additionally, when checking whether the arrow is an instance of EntityTippedArrow, it always returns true, regardless of whether the arrow is tipped or not. use ReflectionHelper 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)
November 25, 20186 yr 7 minutes ago, theishiopian said: I tried using reflection initially, but it didnt work when the mod was built. Then you likely didn't provide the SRG name. Minecraft is obfuscated. It means that the field/class/method names in the compiled game differ from those in the source code. Use ReflectionHelper - it gives you methods which take multiple names for the thing you are searching for. Provide both the MCP(deobfuscated) name and SRG(obfuscated-ish). It's actually a bit more complex(there are three levels of names, Notch, SRG, MCP), you can ask for more if you'd like to know more. You can get the SRG names from mcpbot or from %user_folder%\.gradle\caches\minecraft\de\oceanlabs\mcp\mcp_snapshot\%snapshot_data%\%game_version%\srgs 11 minutes ago, theishiopian said: Additionally, when checking whether the arrow is an instance of EntityTippedArrow, it always returns true, regardless of whether the arrow is tipped or not. It's because technically all arrows apart from spectral ones are TippedArrows.
November 25, 20186 yr Author net/minecraft/entity/EntityAreaEffectCloud.func_184484_a(Lnet/minecraft/potion/PotionType;)V=|p_184484_1_ is this the one for the potion type field? Forgive my noobishness, this is a lot to take in at once.
November 25, 20186 yr 4 minutes ago, theishiopian said: is this the one for the potion type field? No, it's not and you can see that yourself: It's called func_XXXXX. Why would a field be named func? It's owner class is net/minecraft/entity/EntityAreaEffectCloud. AreaEffectCloud != EntityTippedArrow
November 25, 20186 yr Author ok, well what does a field look like in here? all there are are inits and funcs.
November 25, 20186 yr 5 minutes ago, theishiopian said: ok, well what does a field look like in here? field_XXXXX. The line will also start with the letters FD(FielD) For example, the ones you are interested in: FD: net/minecraft/entity/projectile/EntityTippedArrow/potion net/minecraft/entity/projectile/EntityTippedArrow/field_184560_g FD: net/minecraft/entity/projectile/EntityTippedArrow/customPotionEffects net/minecraft/entity/projectile/EntityTippedArrow/field_184561_h
November 25, 20186 yr Author Theres nothing in the srg.exc that looks like that. Am I looking in the wrong place? EDIT: looks like I need to look in the srg files themselves. I feel like a moron now. Edited November 25, 20186 yr by theishiopian Im dum
November 25, 20186 yr Author Question regarding ReflectionHelper.findField: the method doesnt seem to take an obfuscated name. Do I put it in the top anyways? It looked like it could take multiple names.
November 25, 20186 yr ReflectionHelper.findField takes in a class and an array of field names. That array contains all names to look up the field by. That would be the MCP and the SRG names.
November 25, 20186 yr Author Ok, that makes a lot more sense. Just searching it by potion didnt work, as expected, so i'll try the mcp names and srgs and such. Thank you for being so patient with me, this is very informative.
November 25, 20186 yr Author ok, using both the obfuscated name and de-obfuscated name works perfectly. Thank you so much!
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.