diff --git a/src/main/java/com/github/alexthe668/domesticationinnovation/mixin/MobMixin.java b/src/main/java/com/github/alexthe668/domesticationinnovation/mixin/MobMixin.java index 48ba40b..cd6f967 100644 --- a/src/main/java/com/github/alexthe668/domesticationinnovation/mixin/MobMixin.java +++ b/src/main/java/com/github/alexthe668/domesticationinnovation/mixin/MobMixin.java @@ -10,6 +10,8 @@ import net.minecraft.world.entity.Mob; import net.minecraft.world.entity.ai.control.MoveControl; import net.minecraft.world.entity.ai.navigation.PathNavigation; +import net.minecraft.world.entity.animal.Animal; +import net.minecraft.world.entity.animal.WaterAnimal; import net.minecraft.world.entity.animal.axolotl.Axolotl; import net.minecraft.world.entity.item.ItemEntity; import net.minecraft.world.entity.player.Player; @@ -21,6 +23,8 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; +import javax.annotation.Nullable; + @Mixin(Mob.class) public abstract class MobMixin extends LivingEntity { @@ -98,4 +102,11 @@ private void di_playAmbientSound(CallbackInfo ci) { ci.cancel(); } } + + @Inject(method = "setTarget", at = @At(value = "HEAD"), cancellable = true) + private void di_setTarget(@Nullable LivingEntity livingEntity, CallbackInfo ci) { + if (TameableUtils.hasEnchant(this, DIEnchantmentRegistry.PACIFIST) && (livingEntity instanceof Animal || livingEntity instanceof WaterAnimal) ) { + ci.cancel(); + } + } } diff --git a/src/main/java/com/github/alexthe668/domesticationinnovation/server/enchantment/DIEnchantmentRegistry.java b/src/main/java/com/github/alexthe668/domesticationinnovation/server/enchantment/DIEnchantmentRegistry.java index cd0081a..b4be6e5 100644 --- a/src/main/java/com/github/alexthe668/domesticationinnovation/server/enchantment/DIEnchantmentRegistry.java +++ b/src/main/java/com/github/alexthe668/domesticationinnovation/server/enchantment/DIEnchantmentRegistry.java @@ -49,7 +49,8 @@ public class DIEnchantmentRegistry { public static final PetEnchantment BLAZING_PROTECTION = new PetEnchantmentLootOnly("blazing_protection", Enchantment.Rarity.VERY_RARE, 3, 8); public static final PetEnchantment HEALING_AURA = new PetEnchantment("healing_aura", Enchantment.Rarity.RARE, 2, 12); - public static final PetEnchantment REJUVENATION = new PetEnchantment("rejuvenation", Enchantment.Rarity.UNCOMMON, 1, 6); + public static final PetEnchantment REJUVENATION = new PetEnchantment("rejuvenation", Enchantment.Rarity.COMMON, 1, 1); + public static final PetEnchantment PACIFIST = new PetEnchantment("pacifist", Enchantment.Rarity.UNCOMMON, 1, 4); public static final PetEnchantment UNDEAD_CURSE = new PetEnchantmentCurse("undead_curse", Enchantment.Rarity.VERY_RARE); public static final PetEnchantment INFAMY_CURSE = new PetEnchantmentCurse("infamy_curse", Enchantment.Rarity.VERY_RARE); public static final PetEnchantment BLIGHT_CURSE = new PetEnchantmentCurse("blight_curse", Enchantment.Rarity.VERY_RARE); diff --git a/src/main/resources/assets/domesticationinnovation/lang/en_us.json b/src/main/resources/assets/domesticationinnovation/lang/en_us.json index 92b7c14..705121a 100644 --- a/src/main/resources/assets/domesticationinnovation/lang/en_us.json +++ b/src/main/resources/assets/domesticationinnovation/lang/en_us.json @@ -114,6 +114,8 @@ "enchantment.domesticationinnovation.healing_aura.desc": "Pet will ocassionally heal owner and other pets around it, level determines strength of healing effect.", "enchantment.domesticationinnovation.rejuvenation": "Rejuvenation", "enchantment.domesticationinnovation.rejuvenation.desc": "When injured, pet may absorb experience orbs to heal itself.", + "enchantment.domesticationinnovation.pacifist": "Pacifist", + "enchantment.domesticationinnovation.pacifist.desc": "Pet will not attack other animals.", "domesticationinnovation.sound.subtitle.collar_tag": "equipped Collar Tag", "domesticationinnovation.sound.subtitle.magnet_loop": "Magnet buzzes", "domesticationinnovation.sound.subtitle.chain_lightning": "Lightning zaps",