Paper/patches/server/1056-Added-EntityDamageDoor...

33 lines
1.7 KiB
Diff

From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: CMarcoo <cmarco.org@gmail.com>
Date: Thu, 14 Mar 2024 17:04:43 +0100
Subject: [PATCH] Added EntityDamageDoorEvent and implemented into Server.
diff --git a/src/main/java/net/minecraft/world/entity/ai/goal/BreakDoorGoal.java b/src/main/java/net/minecraft/world/entity/ai/goal/BreakDoorGoal.java
index a85885ee51df585fa11ae9f8fcd67ff2a71c5a18..165f09d15f3c5ace37441035c18fe8c67e4a2efc 100644
--- a/src/main/java/net/minecraft/world/entity/ai/goal/BreakDoorGoal.java
+++ b/src/main/java/net/minecraft/world/entity/ai/goal/BreakDoorGoal.java
@@ -55,7 +55,20 @@ public class BreakDoorGoal extends DoorInteractGoal {
@Override
public void tick() {
super.tick();
- if (this.mob.getRandom().nextInt(20) == 0) {
+ // Paper start - damage door event
+ boolean playEffect = this.mob.getRandom().nextInt(20) == 0;
+ io.papermc.paper.event.entity.EntityDamageDoorEvent event = new io.papermc.paper.event.entity.EntityDamageDoorEvent(this.mob.getBukkitEntity(), this.mob.level().getBlockState(this.doorPos).createCraftBlockData(), this.breakTime, this.getDoorBreakTime(), playEffect);
+ if (!event.callEvent()) {
+ this.breakTime = this.getDoorBreakTime() + 1; // Make it return false
+ this.lastBreakProgress = -1;
+ return;
+ }
+
+ this.breakTime = event.getCurrentBreakTicks();
+ playEffect = event.playsEffect();
+ // Paper end
+
+ if (playEffect) { // Paper
this.mob.level().levelEvent(1019, this.doorPos, 0);
if (!this.mob.swinging) {
this.mob.swing(this.mob.getUsedItemHand());