2025-02-16 20:19:28 +01:00
|
|
|
--- a/net/minecraft/world/item/MaceItem.java
|
|
|
|
+++ b/net/minecraft/world/item/MaceItem.java
|
2025-04-12 17:26:44 +02:00
|
|
|
@@ -52,7 +_,13 @@
|
2025-02-16 20:19:28 +01:00
|
|
|
|
|
|
|
@Override
|
2025-04-12 17:26:44 +02:00
|
|
|
public void hurtEnemy(ItemStack stack, LivingEntity target, LivingEntity attacker) {
|
2025-02-16 20:19:28 +01:00
|
|
|
- if (canSmashAttack(attacker)) {
|
|
|
|
+ // Paper start - Add EntityAttemptSmashAttackEvent
|
|
|
|
+ final boolean canSmashAttack = canSmashAttack(attacker);
|
|
|
|
+ io.papermc.paper.event.entity.EntityAttemptSmashAttackEvent event = new io.papermc.paper.event.entity.EntityAttemptSmashAttackEvent(attacker.getBukkitLivingEntity(), target.getBukkitLivingEntity(), stack.asBukkitCopy(), canSmashAttack);
|
|
|
|
+ event.callEvent();
|
|
|
|
+ final org.bukkit.event.Event.Result result = event.getResult();
|
|
|
|
+ if (result == org.bukkit.event.Event.Result.ALLOW || (canSmashAttack && result == org.bukkit.event.Event.Result.DEFAULT)) {
|
|
|
|
+ // Paper end - Add EntityAttemptSmashAttackEvent
|
|
|
|
ServerLevel serverLevel = (ServerLevel)attacker.level();
|
|
|
|
attacker.setDeltaMovement(attacker.getDeltaMovement().with(Direction.Axis.Y, 0.01F));
|
|
|
|
if (attacker instanceof ServerPlayer serverPlayer) {
|
2025-04-12 17:26:44 +02:00
|
|
|
@@ -127,7 +_,7 @@
|
2025-03-12 07:13:47 -03:00
|
|
|
double knockbackPower = getKnockbackPower(attacker, livingEntity, vec3);
|
|
|
|
Vec3 vec31 = vec3.normalize().scale(knockbackPower);
|
|
|
|
if (knockbackPower > 0.0) {
|
|
|
|
- livingEntity.push(vec31.x, 0.7F, vec31.z);
|
|
|
|
+ livingEntity.push(vec31.x, 0.7F, vec31.z, attacker); // Paper - Add EntityKnockbackByEntityEvent and EntityPushedByEntityAttackEvent
|
|
|
|
if (livingEntity instanceof ServerPlayer serverPlayer) {
|
|
|
|
serverPlayer.connection.send(new ClientboundSetEntityMotionPacket(serverPlayer));
|
|
|
|
}
|