Jump to content

[VANILLA BUG][SOLVED][1.7.2] Block metadata incorrect during explosion?


Recommended Posts

Posted

I'm getting abnormal behavior from getExplosionResistance - it seems to ignore the real world metadata values or the real world metadata gets changed before getting the explosion resistance:

@Override
public void onBlockClicked(World world, int x, int y, int z, EntityPlayer player) {
// printing the values I would expect from the block placed, e.g. 12
System.out.println("Block metadata: " + world.getBlockMetadata(x, y, z));
}

@Override
public float getExplosionResistance(Entity entity, World world, int x, int y, int z, double explosionX, double explosionY, double explosionZ) {
// printing the world meta here prints ZERO?!?! it just printed 12 when I clicked the block a second ago...
System.out.println("Block meta: " + world.getBlockMetadata(x, y, z));
if (world.getBlockMetadata(x, y, z) < 0x8) {
return getExplosionResistance(entity);
} else {
// never prints, obviously
return 500F;
}
}

Posted

getExplosionResistance(entity);

 

What does that do?

 

You also have print statements in there, what do they say when run?

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.

Posted

getExplosionResistance(entity);

 

What does that do?

 

You also have print statements in there, what do they say when run?

getExplosionResistance(entity); is a function that gets the explosion resistance of a block. It is found in the block class.

Posted

And my other question?

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.

Posted

getExplosionResistance(entity) is what vanilla blocks call from the multiple parameter getExplosionResistance method, which ultimately just returns blockHardness / 5.0F.

 

The print statements in clickBlock show the correct metadata, in my test it was 12, and previously (1.6.4) getExplosionResistance(args[]...) would also show the correct metadata; now, however, it always prints 0 zero for the metadata in that method, so of course my block is destroyed when it shouldn't be.

Posted

Print out the block ID at that location.

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.

Posted

And now you have found the problem.

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.

Posted

Well, thanks to Draco's suggestion, I found out the source of the problem:

// vanilla method:
public void onBlockExploded(World world, int x, int y, int z, Explosion explosion)
{
world.setBlockToAir(x, y, z);
onBlockDestroyedByExplosion(world, x, y, z, explosion);
}

// my "fix":
@Override
public void onBlockExploded(World world, int x, int y, int z, Explosion explosion) {
if (world.getBlockMetadata(x, y, z) < 0x8) {
super.onBlockExploded(world, x, y, z, explosion);
}
}

That solves the blocks getting destroyed when they shouldn't, though I'm not very satisfied with it. This method is the same as in 1.6.4, so I'm not sure what else has changed to cause this discrepancy, so if anyone else has insights, I'd love to hear them. Likewise, I'll post my findings if I discover anything more about this.

Posted

It's a bug in the vanilla code:

 

// Entity.getExplosionResistance:

public float func_145772_a(Explosion p_145772_1_, World p_145772_2_, int p_145772_3_, int p_145772_4_, int p_145772_5_, Block p_145772_6_)

{

return p_145772_6_.getExplosionResistance(this, p_145772_2_, p_145772_3_, p_145772_3_, p_145772_4_, posX, posY + getEyeHeight(), posZ);

}

 

Notice how the parameter 'x' is used for both x and y when getting the block's explosion resistance, and the y parameter is used for z.

 

Posted

Report it to Mojang.  I've reported things I've found in the code before (like why walking on slabs over ice is like walking on ice, it has to do with the fact that the entity position is floored, then subtracts 1 to determine what block you're walking on).

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.

Posted

Every time I go to report a bug, I get to the point where it asks me to create a new account and I stop. Call me lazy, but I think it's ridiculous to need an account just to report a bug, and being unable to use the one we already have with Mojang is even more ridiculous. So I just end up never reporting bugs. I know, it's petty, but it pisses me off every time I go there. Just one of those random things...

Posted

You are a lazy bastard indeed.

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.

Posted

Not lazy, it's just one of those things that I can't stand for some illogical reason. I realize it's stupid, but it still irks me to no end that I have to create an account to post a bug report. I actually did create an account for the original Atlassian bug tracker, but somehow that's gotten all f-ed up and I can't use it anymore due to some onDemand gibberish, and I really don't feel like making another or wasting any more time than I already have on it, when they could just as easily link it to our Minecraft accounts. I don't see how they expect people to report bugs when they make it such a damn hassle to do so, but perhaps I'm the only one that feels that way.

Posted
due to some onDemand gibberish

 

You mean like migrating to a new URL?  Your login is valid on the new tracker if you had one on the old.

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.

Posted

You mean like migrating to a new URL?  Your login is valid on the new tracker if you had one on the old.

That's what I thought as well, but you know, it was quite a long time ago when I set up that account, and to be honest I don't recall if I ever got it working back then either. I thought I had, but now I'm not so certain, as I recall it being quite difficult to set up. I realize that makes me look like an idiot, I mean come on, who can't set up an online account these days... but man, I've never encountered a service that is that freaking difficult to use before. I set up an account, log in and there seem to be all sorts of other account 'options', and later on I can't use the account anymore because it's not set up for whatever that damn on Demand crap is, and I sure as hell am not signing up for that because it sounds like a paid 'service'. I was definitely able to at least log in before, more than a year ago, but now I can't even do that. Anyway, I've wasted a lot of time messing around with the damn thing since its inception, and I've just had enough of it, in addition to my original point that I think it's absurd to require an account, especially one separate from the one we already use to play the game, just to report a bug. Sorry, but the whole situation has been grating on my nerves for some time, and it's been exceedingly frustrating to use (or not, since I haven't been successful since I first set up the account).

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



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • I need to know what mod is doing this crash, i mean the mod xenon is doing the crash but i want to know who mod is incompatible with xenon, but please i need to know a solution if i need to replace xenon, i cant use optifine anymore and all the other mods i tried(sodium, lithium, vulkan, etc) doesn't work, it crash the game.
    • I have been trying to solve a consistent crashing issue on my brother's computer where it will crash during the "Scanning Mod Candidates" phase of the loading process that starts when you click the play button on the Minecraft launcher. The issue seems to stem from a missing library that it mentions in the log file I provide below. I might I'm missing the bigger issue here for a smaller one but hopefully someone can find what I'm missing. Here's all of the stuff that I've been able to figure out so far: 1. It has nothing to do with mods, the crash happened with a real modpack, and even when I made a custom modpack and launched it without putting ANY mods into it (That is where the log file comes from by the way). 2. I have tried to find this class like a file in the Minecraft folders, but I've had no luck finding it (I don't think it works like that, but since I really don't understand how it works, I just figured I'd try). 3. I haven't seen anyone else have this issue before. 4. I know that my modpack (with mods) does work since I've run it on my computer, and it works fantastic. For some reason my brother's computer can't seem to run anything through curseforge. 5. This is for Minecraft version 1.20.1, Minecraft launcher version 3.4.50-2.1.3, forge 47.3.0, and curseforge app version 1.256.0.21056 6. My brother is using a Dell laptop from 6 years ago running Windows 10 (If you think more info on this would help, please ask as I do have it. I'm just choosing not to put it here for now). 7. I have reinstalled the curseforge app and installed Minecraft version 1.20.1. I have not reinstalled Minecraft or forge 47.3.0 but I didn't know if that would help. 8. I had an error code of 1 Please let me know if there is anything else that I am missing that you would like me to add to this post/add in a comment! Lastly, many thanks in advance to whoever can help! ------------- LOG FILE (latest.log) ------------- (from /Users/<NAME OF USER>/cursforge/minecraft/Instances/<THE NAME OF MY EMPTY MODPACK>/logs/latest.log) (This was made after running an empty modpack with same versions for all apps) ("[REDACTED]" is not the actual text from the log, it is me replacing text I figured wouldn't be necessary for fixing and would hurt my privacy) https://pastebin.com/hxXvGGEK ------------- DEBUG.LOG (I realized that I should have put this here first after I had done all of the work on putting latest.log in) -------------------- (again, "[REDACTED]" is not the actual text from the log, it is me replacing text I figured wouldn't be necessary for fixing and would hurt my privacy) https://pastebin.com/Fmh8GHYs
    • Pastebin... https://pastebin.com/Y3iZ85L5   Brand new profile, does not point to a mod as far as I can tell, my fatal message just has something about mixins. Don't know much about reading logs like this, but am genuinely stuck, please help. Java updated, pc restarted.
    • I was playing minecraft, forge 47.3.0 and 1.20.1, but when i tried to play minecraft now only crashes, i need help please. here is the crash report: https://securelogger.net/files/e6640a4f-9ed0-4acc-8d06-2e500c77aaaf.txt
  • Topics

×
×
  • Create New...

Important Information

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