package asm.accessors;

import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.minecraft.entity.Entity;
import net.minecraft.entity.damage.DamageSource;
import net.minecraft.world.World;
import net.minecraft.world.explosion.Explosion;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Mutable;
import org.spongepowered.asm.mixin.gen.Accessor;

@Environment(EnvType.CLIENT)
@Mixin({Explosion.class})
public interface IExplosion {
   @Mutable
   @Accessor("x")
   void setX(double d);

   @Mutable
   @Accessor("y")
   void setY(double d);

   @Mutable
   @Accessor("z")
   void setZ(double d);

   @Mutable
   @Accessor("power")
   void setPower(float f);

   @Mutable
   @Accessor("entity")
   void setEntity(Entity entity);

   @Mutable
   @Accessor("world")
   World getWorld();

   @Mutable
   @Accessor("world")
   void setWorld(World world);

   @Mutable
   @Accessor("damageSource")
   DamageSource getDamageSource();
}
