Jump to content

Block that drowns, but isn't water


Draco18s

Recommended Posts

I'm trying to create a block that causes the player to suffocate (with a breath meter) but which doesn't allow the player to swim "up" in it.

 

Currently both of these functions are handled exclusively by the block's material type.

 

//EntityLiving.java

If(Material == Material.water) { breath goes down } else { reset to full }
If(Material == Material.water) { allow swimming }

 

So while my block can get and set the player's air value, because my block's material is-not-water, the EntityPlayer just resets it to 300 anyway.

 

But if I use Material.water as my block's material, the player is allowed to swim in it (various forms of negating the swimming have been tried, to much amusement).

 

Suggestions?

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.

Link to comment
Share on other sites

xmaybe make your own material, just copy water but screw it up a little? :-X

or maybe make an oncollide (or something simmilar, can't remember) with 2 double varibles

1 = last Y pos

2 = current Y pos

if(1 < 2 && 2 != 0xF) { move the player back down;}

else{//whatever you want}

1 = 2;

2 = 0xF;

Also, I should have you know that you are reading my signature.

Link to comment
Share on other sites

xmaybe make your own material, just copy water but screw it up a little? :-X

 

Won't work.  Drowning is entirely tied to Material.water.

 

or maybe make an oncollide (or something simmilar, can't remember) with 2 double varibles

1 = last Y pos

2 = current Y pos

if(1 < 2 && 2 != 0xF) { move the player back down;}

else{//whatever you want}

1 = 2;

2 = 0xF;

 

That is exactly what resulted in flinging me to Y=10,000,000

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.

Link to comment
Share on other sites

Make a material that is like water with the propertys you want and without that ones you don't.

 

WATER AS A MATERIAL IS NOT RESPONSIBLE FOR THE DESIRED BEHAVIOR.  How many times do I have to say that?

 

EntityLiving is responsible for the desired behavior:

 

if (this.isEntityAlive() && this.isInsideOfMaterial(Material.water) && !this.canBreatheUnderwater() && !this.activePotionsMap.containsKey(Integer.valueOf(Potion.waterBreathing.id)) && !flag) {
    this.setAir(this.decreaseAirSupply(this.getAir()));

 

Note how it references Material.water.

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.

Link to comment
Share on other sites

Hmm... I was wondering, could you maybe make an invisible replica of the player entity that has these set attributes? Then, when you needed to use those attributes, switch out the EntityPlayer to your "clone"? Then once that action has been performed, reverts back to that EntityPlayer that was originally used?

I am Mew. The Legendary Psychic. I behave oddly and am always playing practical jokes.

 

I have also found that I really love making extremely long and extremely but sometimes not so descriptive variables. Sort of like what I just did there xD

Link to comment
Share on other sites

Hmm... I was wondering, could you maybe make an invisible replica of the player entity that has these set attributes? Then, when you needed to use those attributes, switch out the EntityPlayer to your "clone"? Then once that action has been performed, reverts back to that EntityPlayer that was originally used?

 

No, because it's update function will still revert the breath bar to full.

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.

Link to comment
Share on other sites

I believe I didn't explain my idea well enough. And it would also require a core mod to be made.

 

 

have you tried making a function that "Mirrors" the normal function? Then mirror everything else that is needed for it and such? Though this will also probably require either a base edit or a core mod.

I am Mew. The Legendary Psychic. I behave oddly and am always playing practical jokes.

 

I have also found that I really love making extremely long and extremely but sometimes not so descriptive variables. Sort of like what I just did there xD

Link to comment
Share on other sites

I believe I didn't explain my idea well enough. And it would also require a core mod to be made.

 

If I wanted to do a core mod, I'd simply fix the existing EntityLiving class so that it checks for material properties rather than seeing if the material is water (same thing with item frames using "is the item in my inventory exactly equal to Item.map" instead of "is the item in my inventory isMap?".[1]

 

have you tried making a function that "Mirrors" the normal function? Then mirror everything else that is needed for it and such? Though this will also probably require either a base edit or a core mod.

 

Explain better.  But if it has to be a base edit or core mod, see above.

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.

Link to comment
Share on other sites

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.

×
×
  • Create New...

Important Information

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