package playasmob;
import net.minecraft.world.level.biome.Biomes;
import net.minecraft.world.level.biome.Biome;
import net.minecraft.world.level.Level;
import net.minecraft.world.item.Items;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.entity.projectile.Arrow;
import net.minecraft.world.entity.projectile.AbstractArrow;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.entity.monster.Stray;
import net.minecraft.world.entity.EntityType;
import net.minecraft.world.effect.MobEffects;
import net.minecraft.world.effect.MobEffectInstance;
import net.minecraft.world.damagesource.DamageSource;
import net.minecraft.sounds.SoundEvents;
import net.minecraft.sounds.SoundEvent;
import net.minecraft.resources.ResourceKey;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.client.renderer.entity.StrayRenderer;
import net.minecraft.client.renderer.entity.EntityRenderer;
import java.util.List;
public class StrayInfo extends AbstractSkeletonInfo {
public StrayInfo(Player player, CompoundTag compound) {
super(EntityType.STRAY, Stray.class, player, compound);
}
public StrayInfo(Player player) {
this(player, null);
}
public StrayInfo() {
this(null);
}
// Custom Code
@Override
public EntityRenderer getRenderer() {
return new StrayRenderer(Utils.getContext());
}
@Override
public List<ResourceKey<Biome>> getRespawnBiomes(ResourceKey<Level> dimension) {
return dimension.equals(Level.OVERWORLD) ? List.of(Biomes.SNOWY_BEACH, Biomes.SNOWY_PLAINS, Biomes.SNOWY_SLOPES, Biomes.SNOWY_TAIGA) : super.getRespawnBiomes(dimension);
}
// Skeleton.class Code
@Override
public SoundEvent getAmbientSound() {
return SoundEvents.STRAY_AMBIENT;
}
@Override
public SoundEvent getHurtSound(SoundEvent original, DamageSource source) {
return SoundEvents.STRAY_HURT;
}
@Override
public SoundEvent getDeathSound(SoundEvent original) {
return SoundEvents.STRAY_DEATH;
}
@Override
public SoundEvent getStepSound() {
return SoundEvents.STRAY_STEP;
}
@Override
public void modifyArrow(AbstractArrow arrow, ItemStack projectileStack, ItemStack weaponStack) {
super.modifyArrow(arrow, projectileStack, weaponStack);
if (weaponStack.is(Items.BOW) && arrow instanceof Arrow arrowPro)
arrowPro.addEffect(new MobEffectInstance(MobEffects.MOVEMENT_SLOWDOWN, 600));
}
}