2019-12-17 14:37:59 +02:00
|
|
|
package pw.kaboom.extras.modules.entity;
|
2019-07-30 20:14:24 +03:00
|
|
|
|
2020-02-26 22:20:13 +02:00
|
|
|
import org.bukkit.entity.Arrow;
|
|
|
|
import org.bukkit.entity.EntityType;
|
2019-07-30 20:14:24 +03:00
|
|
|
import org.bukkit.event.EventHandler;
|
|
|
|
import org.bukkit.event.Listener;
|
2020-02-26 22:20:13 +02:00
|
|
|
import org.bukkit.event.entity.ProjectileHitEvent;
|
2019-07-30 20:14:24 +03:00
|
|
|
|
|
|
|
import com.destroystokyo.paper.event.entity.EntityKnockbackByEntityEvent;
|
|
|
|
|
2019-12-21 16:12:26 +02:00
|
|
|
public final class EntityKnockback implements Listener {
|
2022-05-20 05:35:48 +03:00
|
|
|
@EventHandler
|
|
|
|
void onEntityKnockbackByEntity(final EntityKnockbackByEntityEvent event) {
|
|
|
|
final int knockbackLimit = 60;
|
2019-07-30 21:18:16 +03:00
|
|
|
|
2022-05-20 05:35:48 +03:00
|
|
|
if (event.getKnockbackStrength() > knockbackLimit) {
|
|
|
|
event.getAcceleration().multiply(
|
|
|
|
knockbackLimit / event.getKnockbackStrength()
|
|
|
|
);
|
|
|
|
}
|
|
|
|
}
|
2020-02-27 17:08:10 +02:00
|
|
|
|
2022-05-20 05:35:48 +03:00
|
|
|
@EventHandler
|
|
|
|
void onProjectileHit(final ProjectileHitEvent event) {
|
|
|
|
if (event.getHitEntity() != null
|
|
|
|
&& EntityType.ARROW.equals(event.getEntityType())) {
|
|
|
|
final Arrow arrow = (Arrow) event.getEntity();
|
|
|
|
final int knockbackLimit = 60;
|
2020-02-27 17:08:10 +02:00
|
|
|
|
2022-05-20 05:35:48 +03:00
|
|
|
if (arrow.getKnockbackStrength() > knockbackLimit) {
|
|
|
|
arrow.setKnockbackStrength(knockbackLimit);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2019-07-30 20:14:24 +03:00
|
|
|
}
|