diff --git a/src/main/java/com/acethewildfire/acesbs/AcesBS.java b/src/main/java/com/acethewildfire/acesbs/AcesBS.java index e2c6646..ef1cb89 100644 --- a/src/main/java/com/acethewildfire/acesbs/AcesBS.java +++ b/src/main/java/com/acethewildfire/acesbs/AcesBS.java @@ -13,12 +13,10 @@ import com.acethewildfire.acesbs.util.UpdateRecipies; import com.acethewildfire.acesbs.util.YouMonsterEvent; import com.acethewildfire.acesbs.world.gen.ModWorldGeneration; import net.fabricmc.api.ModInitializer; - import net.fabricmc.fabric.api.event.player.AttackEntityCallback; import net.fabricmc.fabric.api.event.player.PlayerBlockBreakEvents; import net.fabricmc.fabric.api.registry.CompostingChanceRegistry; import net.fabricmc.fabric.api.registry.FabricBrewingRecipeRegistryBuilder; -import net.fabricmc.fabric.api.renderer.v1.Renderer; import net.minecraft.item.Items; import net.minecraft.potion.Potions; import org.slf4j.Logger; diff --git a/src/main/java/com/acethewildfire/acesbs/item/ModItems.java b/src/main/java/com/acethewildfire/acesbs/item/ModItems.java index 92460c1..d4c942f 100644 --- a/src/main/java/com/acethewildfire/acesbs/item/ModItems.java +++ b/src/main/java/com/acethewildfire/acesbs/item/ModItems.java @@ -122,7 +122,8 @@ public class ModItems { public static final Item BERSERKERS_PAULDRON = registerItem("berserkers_pauldron", new ModArmorItem(ModArmorMaterials.BERSERKERS, ArmorItem.Type.CHESTPLATE, new Item.Settings() - .maxDamage(ArmorItem.Type.CHESTPLATE.getMaxDamage(15)).attributeModifiers(AttributeModifiersComponent.builder() + .maxDamage(ArmorItem.Type.CHESTPLATE.getMaxDamage(15)) + .attributeModifiers(AttributeModifiersComponent.builder() .add(EntityAttributes.GENERIC_MAX_HEALTH, new EntityAttributeModifier(Identifier.of(AcesBS.MOD_ID, "generic.max_health"), 20, EntityAttributeModifier.Operation.ADD_VALUE), AttributeModifierSlot.CHEST) .add(EntityAttributes.GENERIC_ARMOR, diff --git a/src/main/java/com/acethewildfire/acesbs/mixin/AbstractClientPlayerEntityMixin.java b/src/main/java/com/acethewildfire/acesbs/mixin/AbstractClientPlayerEntityMixin.java index 53955d3..43c1a39 100644 --- a/src/main/java/com/acethewildfire/acesbs/mixin/AbstractClientPlayerEntityMixin.java +++ b/src/main/java/com/acethewildfire/acesbs/mixin/AbstractClientPlayerEntityMixin.java @@ -1,9 +1,11 @@ package com.acethewildfire.acesbs.mixin; +import com.acethewildfire.acesbs.AcesBS; import com.acethewildfire.acesbs.item.ModItems; import com.mojang.authlib.GameProfile; import net.minecraft.client.MinecraftClient; import net.minecraft.client.network.AbstractClientPlayerEntity; +import net.minecraft.entity.damage.DamageSource; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; diff --git a/src/main/java/com/acethewildfire/acesbs/mixin/PlayerEntityMixin.java b/src/main/java/com/acethewildfire/acesbs/mixin/PlayerEntityMixin.java new file mode 100644 index 0000000..50307b4 --- /dev/null +++ b/src/main/java/com/acethewildfire/acesbs/mixin/PlayerEntityMixin.java @@ -0,0 +1,47 @@ +package com.acethewildfire.acesbs.mixin; + +import com.acethewildfire.acesbs.AcesBS; +import com.acethewildfire.acesbs.item.ModItems; +import net.minecraft.client.network.AbstractClientPlayerEntity; +import net.minecraft.entity.Entity; +import net.minecraft.entity.damage.DamageSource; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.entity.player.PlayerInventory; +import net.minecraft.item.Item; +import net.minecraft.sound.SoundCategory; +import net.minecraft.sound.SoundEvent; +import net.minecraft.sound.SoundEvents; +import net.minecraft.text.Text; +import net.minecraft.world.World; +import org.jetbrains.annotations.Nullable; +import org.spongepowered.asm.mixin.Final; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; +import org.spongepowered.asm.mixin.injection.callback.LocalCapture; + +import java.util.Objects; + +@Mixin(PlayerEntity.class) +public abstract class PlayerEntityMixin { + + @Shadow @Final + PlayerInventory inventory; + + @Shadow public abstract Text getName(); + + @Inject(method = "damage", at = @At(value = "TAIL"), locals = LocalCapture.CAPTURE_FAILSOFT, cancellable = true) + private void damageMixin(DamageSource source, float amount, CallbackInfoReturnable cir) { + Item chestplate = this.inventory.getArmorStack(2).getItem(); + if (chestplate == ModItems.BERSERKERS_PAULDRON && !Objects.equals(this.getName().getLiteralString(), "Tennocraft12")){ + PlayerEntity player = (PlayerEntity) (Object) this; + World world = player.getWorld(); + if (!world.isClient()) { + world.playSound(null, player.getX(),player.getY(), player.getZ(), SoundEvents.ENTITY_SKELETON_HURT, SoundCategory.PLAYERS, 2f, 1f); + } + cir.setReturnValue(true); + } + } +} diff --git a/src/main/resources/acesbs.mixins.json b/src/main/resources/acesbs.mixins.json index 728356e..3bfd8de 100644 --- a/src/main/resources/acesbs.mixins.json +++ b/src/main/resources/acesbs.mixins.json @@ -9,6 +9,7 @@ "defaultRequire": 1 }, "client": [ - "AbstractClientPlayerEntityMixin" + "AbstractClientPlayerEntityMixin", + "PlayerEntityMixin" ] } \ No newline at end of file