Jump to content
View in the app

A better way to browse. Learn more.

Forge Forums

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Featured Replies

Posted

I want to create a block which they can not breath, when they are inside of this block.

How can i do that?

just had a quick kin through water and dmg files, cant see how to use the bublles bar like in water but you could just set the bounding box to zero and have on entitycolllide with and then make them take suffocation dmg

Use examples, i have aspergers.

Examples make sense to me.

public void onEntityCollidedWithBlock(World par1World, int par2, int par3, int par4, Entity par5Entity)

{

if (par5Entity instanceof EntityLiving){

par5Entity.attackEntityFrom(DamageSource.drown, 1);

}}

Use examples, i have aspergers.

Examples make sense to me.

just had a thought you could make the player have a negative water breathing potion effect? no idea if that would work xD

Use examples, i have aspergers.

Examples make sense to me.

  • Author

Yeah but i want that the airlevel goes down and the vannilla drown goes down from allone.

 

Also when i use material.water than it works.

But also then you can swim inside of this block.

Thats why i want to make a custom Material for it.

^^" But with that it does not work^^"

i understand, however i can't seem to find where the original code for making the player drown is so i can't help :(

Use examples, i have aspergers.

Examples make sense to me.

  • Author

Search inside of the EntityLiving class for "setAir(par1)"

I have to override this class for these kind of functions!

Because the air handeling is inside of the EntityLiving class.

^^" Maybe i have to^^

i couldnt see anything in that class, but i have done some digging to try and help and i found that you can maybe use "AttributeModifier"???

 

i found this is the potion code, because if you can modify it up for a potion, surely you can modify it down when the player enters the block? not really sure, i am not a very advanced coder :/

Use examples, i have aspergers.

Examples make sense to me.

I think there is a decreaseAirSupply(int) method in EntityLiving.

You can use player ticks to check if the player is inside your block and call that method.

  • Author

GotoLink. Forget it.

That will not work because in the same tick the air will be rested back to 300.

I must override the EntityLiving class!

I tried already so many ways how to add it^^ Every time same result!

Air resets.

Well if the air resets, un-reset it. store the value you're at in the tick handler and on each tick, set the air value to the stored value, then, after x ticks, decrease the value and store the new one.

GotoLink. Forget it.

That will not work because in the same tick the air will be rested back to 300.

I must override the EntityLiving class!

I tried already so many ways how to add it^^ Every time same result!

Air resets.

 

Well then the best thing to do is to figure out WHAT and WHY resets it?

;)

If you guys dont get it.. then well ya.. try harder...

  • Author

I know why it does reset!

xD but this thing is at 1.4 canceled^^"

I tried it again in 1.6 when i find no way then i request a forge addition to that^^"

Having actually messed with this:

 

From EntityLiving (or EntityLivingBase, if you're new enough):

 

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

                if (this.getAir() == -20)
                {
                    this.setAir(0);

                    for (int i = 0; i < 8; ++i)
                    {
                        float f = this.rand.nextFloat() - this.rand.nextFloat();
                        float f1 = this.rand.nextFloat() - this.rand.nextFloat();
                        float f2 = this.rand.nextFloat() - this.rand.nextFloat();
                        this.worldObj.spawnParticle("bubble", this.posX + (double)f, this.posY + (double)f1, this.posZ + (double)f2, this.motionX, this.motionY, this.motionZ);
                    }

                    this.attackEntityFrom(DamageSource.drown, 2.0F);
                }
            }

            this.extinguish();

            if (!this.worldObj.isRemote && this.isRiding() && ridingEntity!=null && ridingEntity.shouldDismountInWater(this))
            {
                this.mountEntity((Entity)null);
            }
        }
        else
        {
            this.setAir(300);
        }

 

If the entity is inside a block of material type water, they drown.  Otherwise they get full air (that's what's resetting it).

Problem is, Material.Water is also what allows for swimming.

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.

  • Author

Draco18s you are right! And also it rendere the screen a little bit blue^^

Thats what my problem is i also do not use the FluidClass for my liquid^^

Thats why both would not work^^ xD

 

Thats why ill request that they add that^^ also i think galic craft have the same problem^^"

 

also i think galic craft have the same problem^^"

 

Galicraft replaces the player class with their own, avoiding the issue (and also getting thing things like low gravity).

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.

Couldn't one then create a new material which extends water and removes the swimming effect?

Or which acts like "air" but adds suffocation effect? :)

If you guys dont get it.. then well ya.. try harder...

  • Author

Nope won't work because the suffocations comes from the player^^"

Forge should add a compatiblity to add something new to the player^^"

Briggybros' idea could work fine, but might be a bit slow in multiplayer.

 

Let's go all out, and do our own air counter (added in player data), and our own gui with drown bar (using RenderGameOverlayEvent).

This way you can change whatever you want, from the air duration to the gui color.

  • Author

xD thanks but i am now 2 weeks over my release date xD

and i still need to update again^^ ill try it again when i update to 1.6.

 

But thanks^^

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...

Important Information

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

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.