Jump to content

[Solved][1.12] Entity#setAir(int air) does nothing


Recommended Posts

Posted (edited)

I'm trying to add the moon into my mod and I've added an event handler that handles entity events. Whenever I spawn an entity on the moon in my mod, the entity doesn't suffocate.

@Mod.EventBusSubscriber
public class EntityHandler {
	
	@SubscribeEvent
	public static void onEntitySpawn(EntityJoinWorldEvent event) {
		if(event.getEntity().dimension == GundamDimensions.moonID) {
			event.getEntity().setAir(0);
			PacketHandler.INSTANCE.sendToServer(new PacketEntitySyncServer(event.getEntity()));
		}
	}
}

 

Edited by Spaceboy Ross

The official YouTuber Spaceboy Ross

Posted (edited)

Suffocation only occurs when an entity is inside a solid block or under water. If it's in "air" (or what the game believes to be air) the amount of air isn't even queried.

 

For example:

You can't drown in lava. Try it.

Edited by Draco18s

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
Just now, Draco18s said:

Suffocation only occurs when an entity is inside a solid block or under water. If it's in "air" (or what the game believes to be air) the amount of air isn't even queried.

Well, how do I make an airless dimension then?

The official YouTuber Spaceboy Ross

Posted

The only mod that I know of that did it is GalactiCraft and they had to completely rewrite entire classes (in non-compatible ways) to do it.

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 (edited)

Wouldn't you be able to just periodically(LivingUpdateEvent, check if Entity.ticksExisted % X == 0 to make the check happen once every X ticks) check whether the entity has a "space suit" or similar equipped and if not deal drowning damage via Entty#attackEntityFrom? As far as I can see there is no reason to use ASM here.

Edited by V0idWa1k3r
Posted
3 minutes ago, V0idWa1k3r said:

Wouldn't you be able to just periodically(LivingUpdateEventor something, check if Entity.ticksExisted % X == 0 to make the check happen once every X ticks) check whether the entity has a "space suit" or similar equipped and if not deal drowning damage via Entty#attackEntityFrom? As far as I can see there is no reason to use ASM here.

It works, thanks for telling me that.

The official YouTuber Spaceboy Ross

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



×
×
  • Create New...

Important Information

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