More fixxxes
This commit is contained in:
		| @ -1,11 +1,14 @@ | |||||||
| package ru.bitheaven.createairfabric.mixin; | package ru.bitheaven.createairfabric.mixin; | ||||||
|  |  | ||||||
|  | import com.simibubi.create.content.equipment.armor.BacktankItem; | ||||||
| import com.simibubi.create.content.equipment.armor.BacktankUtil; | import com.simibubi.create.content.equipment.armor.BacktankUtil; | ||||||
| import com.simibubi.create.content.equipment.armor.DivingHelmetItem; | import com.simibubi.create.content.equipment.armor.DivingHelmetItem; | ||||||
|  |  | ||||||
| import earth.terrarium.adastra.common.items.armor.SpaceSuitItem; | import earth.terrarium.adastra.common.items.armor.SpaceSuitItem; | ||||||
| import earth.terrarium.adastra.common.systems.OxygenApiImpl; | import earth.terrarium.adastra.common.systems.OxygenApiImpl; | ||||||
|  | import earth.terrarium.adastra.common.tags.ModItemTags; | ||||||
| import net.minecraft.world.entity.Entity; | import net.minecraft.world.entity.Entity; | ||||||
|  | import net.minecraft.world.entity.EquipmentSlot; | ||||||
| import net.minecraft.world.entity.LivingEntity; | import net.minecraft.world.entity.LivingEntity; | ||||||
| import org.spongepowered.asm.mixin.Mixin; | import org.spongepowered.asm.mixin.Mixin; | ||||||
| import org.spongepowered.asm.mixin.injection.At; | import org.spongepowered.asm.mixin.injection.At; | ||||||
| @ -18,11 +21,23 @@ public abstract class EntityOxygenSystemMixin { | |||||||
|      */ |      */ | ||||||
|     @Redirect(at = @At(value = "INVOKE", target = "Learth/terrarium/adastra/common/items/armor/SpaceSuitItem;hasOxygen(Lnet/minecraft/world/entity/Entity;)Z"), |     @Redirect(at = @At(value = "INVOKE", target = "Learth/terrarium/adastra/common/items/armor/SpaceSuitItem;hasOxygen(Lnet/minecraft/world/entity/Entity;)Z"), | ||||||
|             method = "entityTick(Lnet/minecraft/server/level/ServerLevel;Lnet/minecraft/world/entity/LivingEntity;)V") |             method = "entityTick(Lnet/minecraft/server/level/ServerLevel;Lnet/minecraft/world/entity/LivingEntity;)V") | ||||||
|     private boolean redirectOxygenTick(Entity entity) { |     private boolean redirectHasOxygen(Entity entity) { | ||||||
|         if (!(entity instanceof LivingEntity livingEntity)) return SpaceSuitItem.hasOxygen(entity); |         if (!(entity instanceof LivingEntity livingEntity)) return SpaceSuitItem.hasOxygen(entity); | ||||||
|         boolean createOxygen = true; |         boolean createOxygen = true; | ||||||
|         createOxygen &= !DivingHelmetItem.getWornItem(livingEntity).isEmpty(); |         createOxygen &= !DivingHelmetItem.getWornItem(livingEntity).isEmpty(); | ||||||
|         createOxygen &= !BacktankUtil.getAllWithAir(livingEntity).isEmpty(); |         createOxygen &= !BacktankUtil.getAllWithAir(livingEntity).isEmpty(); | ||||||
|         return SpaceSuitItem.hasOxygen(livingEntity) || createOxygen; |         return SpaceSuitItem.hasOxygen(livingEntity) || createOxygen; | ||||||
|     } |     } | ||||||
|  |     @Redirect(at = @At(value = "INVOKE", target = "Learth/terrarium/adastra/common/items/armor/SpaceSuitItem;hasFullSet(Lnet/minecraft/world/entity/LivingEntity;)Z"), | ||||||
|  |             method = "entityTick(Lnet/minecraft/server/level/ServerLevel;Lnet/minecraft/world/entity/LivingEntity;)V") | ||||||
|  |     private boolean redirectHasFullSet(LivingEntity entity) { | ||||||
|  |         boolean createArmor = true; | ||||||
|  |         createArmor &= entity.getItemBySlot(EquipmentSlot.HEAD).getItem() instanceof DivingHelmetItem; | ||||||
|  |         createArmor &= entity.getItemBySlot(EquipmentSlot.CHEST).getItem() instanceof BacktankItem; | ||||||
|  |         createArmor &= entity.getItemBySlot(EquipmentSlot.LEGS).is(ModItemTags.SPACE_SUITS); | ||||||
|  |         createArmor &= entity.getItemBySlot(EquipmentSlot.FEET).is(ModItemTags.SPACE_SUITS); | ||||||
|  |  | ||||||
|  |         return SpaceSuitItem.hasFullSet(entity) || createArmor; | ||||||
|  |     } | ||||||
| } | } | ||||||
|  |  | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user