Posted September 11, 201312 yr I want to create a block which they can not breath, when they are inside of this block. How can i do that?
September 11, 201312 yr 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.
September 11, 201312 yr 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.
September 11, 201312 yr just had a thought you could make the player have a negative water breathing potion effect? no idea if that would work Use examples, i have aspergers. Examples make sense to me.
September 11, 201312 yr 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^^"
September 11, 201312 yr 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.
September 11, 201312 yr 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^^
September 11, 201312 yr 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.
September 11, 201312 yr 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.
September 11, 201312 yr 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.
September 11, 201312 yr 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.
September 11, 201312 yr 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...
September 12, 201312 yr Author I know why it does reset! 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^^"
September 12, 201312 yr 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.
September 12, 201312 yr 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^^ Thats why ill request that they add that^^ also i think galic craft have the same problem^^"
September 12, 201312 yr 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.
September 12, 201312 yr 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...
September 12, 201312 yr Author Nope won't work because the suffocations comes from the player^^" Forge should add a compatiblity to add something new to the player^^"
September 12, 201312 yr 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.
September 12, 201312 yr Author thanks but i am now 2 weeks over my release date 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.