geforkt von Mirrors/Paper
96d5e6ca48
Currently includes generated key holder classes for types used in the Registry Modification API
137 Zeilen
4.3 KiB
Diff
137 Zeilen
4.3 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Brokkonaut <hannos17@gmx.de>
|
|
Date: Mon, 18 Jun 2018 15:40:39 +0200
|
|
Subject: [PATCH] Add EntityKnockbackByEntityEvent and
|
|
EntityPushedByEntityAttackEvent
|
|
|
|
Co-authored-by: aerulion <aerulion@gmail.com>
|
|
|
|
diff --git a/src/main/java/com/destroystokyo/paper/event/entity/EntityKnockbackByEntityEvent.java b/src/main/java/com/destroystokyo/paper/event/entity/EntityKnockbackByEntityEvent.java
|
|
new file mode 100644
|
|
index 0000000000000000000000000000000000000000..42fdf7a5bfab99a61ff2fbf562f2872ac360bef2
|
|
--- /dev/null
|
|
+++ b/src/main/java/com/destroystokyo/paper/event/entity/EntityKnockbackByEntityEvent.java
|
|
@@ -0,0 +1,46 @@
|
|
+package com.destroystokyo.paper.event.entity;
|
|
+
|
|
+import io.papermc.paper.event.entity.EntityPushedByEntityAttackEvent;
|
|
+import org.bukkit.entity.Entity;
|
|
+import org.bukkit.entity.LivingEntity;
|
|
+import org.bukkit.util.Vector;
|
|
+import org.jetbrains.annotations.NotNull;
|
|
+
|
|
+/**
|
|
+ * Fired when an Entity is knocked back by the hit of another Entity. The acceleration
|
|
+ * vector can be modified. If this event is cancelled, the entity is not knocked back.
|
|
+ *
|
|
+ */
|
|
+public class EntityKnockbackByEntityEvent extends EntityPushedByEntityAttackEvent {
|
|
+ private final float knockbackStrength;
|
|
+
|
|
+ public EntityKnockbackByEntityEvent(@NotNull LivingEntity entity, @NotNull Entity hitBy, float knockbackStrength, @NotNull Vector acceleration) {
|
|
+ super(entity, hitBy, acceleration);
|
|
+ this.knockbackStrength = knockbackStrength;
|
|
+ }
|
|
+
|
|
+ /**
|
|
+ * @return the entity which was knocked back
|
|
+ */
|
|
+ @NotNull
|
|
+ @Override
|
|
+ public LivingEntity getEntity() {
|
|
+ return (LivingEntity) super.getEntity();
|
|
+ }
|
|
+
|
|
+ /**
|
|
+ * @return the original knockback strength.
|
|
+ */
|
|
+ public float getKnockbackStrength() {
|
|
+ return knockbackStrength;
|
|
+ }
|
|
+
|
|
+ /**
|
|
+ * @return the Entity which hit
|
|
+ */
|
|
+ @NotNull
|
|
+ public Entity getHitBy() {
|
|
+ return super.getPushedBy();
|
|
+ }
|
|
+
|
|
+}
|
|
diff --git a/src/main/java/io/papermc/paper/event/entity/EntityPushedByEntityAttackEvent.java b/src/main/java/io/papermc/paper/event/entity/EntityPushedByEntityAttackEvent.java
|
|
new file mode 100644
|
|
index 0000000000000000000000000000000000000000..c15401cd206eb9e1a7a8b7154aba0247e2da1e19
|
|
--- /dev/null
|
|
+++ b/src/main/java/io/papermc/paper/event/entity/EntityPushedByEntityAttackEvent.java
|
|
@@ -0,0 +1,70 @@
|
|
+package io.papermc.paper.event.entity;
|
|
+
|
|
+import org.bukkit.entity.Entity;
|
|
+import org.bukkit.event.Cancellable;
|
|
+import org.bukkit.event.HandlerList;
|
|
+import org.bukkit.event.entity.EntityEvent;
|
|
+import org.bukkit.util.Vector;
|
|
+import org.jetbrains.annotations.NotNull;
|
|
+
|
|
+/**
|
|
+ * Fired when an entity is pushed by another entity's attack. The acceleration vector can be
|
|
+ * modified. If this event is cancelled, the entity will not get pushed.
|
|
+ * <p>
|
|
+ * Note: Some entities might trigger this multiple times on the same entity
|
|
+ * as multiple acceleration calculations are done.
|
|
+ */
|
|
+public class EntityPushedByEntityAttackEvent extends EntityEvent implements Cancellable {
|
|
+
|
|
+ private static final HandlerList handlers = new HandlerList();
|
|
+
|
|
+ private final @NotNull Entity pushedBy;
|
|
+ private final @NotNull Vector acceleration;
|
|
+ private boolean cancelled = false;
|
|
+
|
|
+ public EntityPushedByEntityAttackEvent(@NotNull Entity entity, @NotNull Entity pushedBy, @NotNull Vector acceleration) {
|
|
+ super(entity);
|
|
+ this.pushedBy = pushedBy;
|
|
+ this.acceleration = acceleration;
|
|
+ }
|
|
+
|
|
+ @NotNull
|
|
+ public HandlerList getHandlers() {
|
|
+ return handlers;
|
|
+ }
|
|
+
|
|
+ @NotNull
|
|
+ public static HandlerList getHandlerList() {
|
|
+ return handlers;
|
|
+ }
|
|
+
|
|
+ @Override
|
|
+ public boolean isCancelled() {
|
|
+ return cancelled;
|
|
+ }
|
|
+
|
|
+ @Override
|
|
+ public void setCancelled(boolean cancel) {
|
|
+ cancelled = cancel;
|
|
+ }
|
|
+
|
|
+ /**
|
|
+ * Gets the entity which pushed the affected entity.
|
|
+ *
|
|
+ * @return the pushing entity
|
|
+ */
|
|
+ @NotNull
|
|
+ public Entity getPushedBy() {
|
|
+ return pushedBy;
|
|
+ }
|
|
+
|
|
+ /**
|
|
+ * Gets the acceleration that will be applied to the affected entity.
|
|
+ *
|
|
+ * @return the acceleration vector
|
|
+ */
|
|
+ @NotNull
|
|
+ public Vector getAcceleration() {
|
|
+ return acceleration;
|
|
+ }
|
|
+}
|