From 99c4d7287032017d0b9b2e592ebd4c856daba175 Mon Sep 17 00:00:00 2001 From: Jendrik Eggers Date: Sun, 5 Jan 2025 17:46:33 +0100 Subject: [PATCH] migrated pre-hard-fork patches 0002-added-ProjectileAllowCollideWithPlayerEvent.patch and 0004-added-ProjectileAllowCollideWithPlayerEvent.patch --- ...ProjectileAllowCollideWithPlayerEvent.java | 73 ++++++++++++++++ .../entity/projectile/Projectile.java.patch | 14 +++ .../event/CraftEventFactory.java.patch | 30 +++++++ ...rojectileAllowCollideWithPlayerEvent.patch | 85 ------------------- ...rojectileAllowCollideWithPlayerEvent.patch | 54 ------------ 5 files changed, 117 insertions(+), 139 deletions(-) create mode 100644 cheetah-api/src/main/java/net/gommehd/cheetah/event/entity/ProjectileAllowCollideWithPlayerEvent.java create mode 100644 cheetah-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/Projectile.java.patch create mode 100644 cheetah-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java.patch delete mode 100644 patches/api/0002-added-ProjectileAllowCollideWithPlayerEvent.patch delete mode 100644 patches/server/0004-added-ProjectileAllowCollideWithPlayerEvent.patch diff --git a/cheetah-api/src/main/java/net/gommehd/cheetah/event/entity/ProjectileAllowCollideWithPlayerEvent.java b/cheetah-api/src/main/java/net/gommehd/cheetah/event/entity/ProjectileAllowCollideWithPlayerEvent.java new file mode 100644 index 0000000..39cbaec --- /dev/null +++ b/cheetah-api/src/main/java/net/gommehd/cheetah/event/entity/ProjectileAllowCollideWithPlayerEvent.java @@ -0,0 +1,73 @@ +package net.gommehd.cheetah.event.entity; + +import org.bukkit.entity.Player; +import org.bukkit.entity.Projectile; +import org.bukkit.event.HandlerList; +import org.bukkit.event.entity.EntityEvent; +import org.jetbrains.annotations.NotNull; + +/** + * Called when a projectile collides with a player + * + * @author TrainmasterHD | Jendrik E. + * @since 18.10.2022 + */ +public class ProjectileAllowCollideWithPlayerEvent extends EntityEvent { + private static final HandlerList handlerList = new HandlerList(); + private final Player collidedWith; + private boolean allowCollide = false; + + public ProjectileAllowCollideWithPlayerEvent(@NotNull Projectile what, @NotNull Player collidedWith) { + super(what); + this.collidedWith = collidedWith; + } + + /** + * Get the projectile that collided + * + * @return the projectile that collided + */ + @NotNull + public Projectile getEntity() { + return (Projectile) super.getEntity(); + } + + /** + * Get the entity the projectile collided with + * + * @return the entity collided with + */ + @NotNull + public Player getCollidedWith() { + return collidedWith; + } + + /** + * Set if the projectile should be allowed to collide with the player + * + * @param allowCollide true if the projectile should be allowed to collide with the player, otherwise false + */ + public void setAllowCollide(final boolean allowCollide) { + this.allowCollide = allowCollide; + } + + /** + * If colliding with the player is allowed + * + * @return true if it is allowed, otherwise false + */ + public boolean isAllowCollide() { + return allowCollide; + } + + @NotNull + public static HandlerList getHandlerList() { + return handlerList; + } + + @NotNull + @Override + public HandlerList getHandlers() { + return handlerList; + } +} diff --git a/cheetah-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/Projectile.java.patch b/cheetah-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/Projectile.java.patch new file mode 100644 index 0000000..c5d247e --- /dev/null +++ b/cheetah-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/Projectile.java.patch @@ -0,0 +1,14 @@ +--- a/net/minecraft/world/entity/projectile/Projectile.java ++++ b/net/minecraft/world/entity/projectile/Projectile.java +@@ -409,7 +_,10 @@ + if (owner instanceof net.minecraft.server.level.ServerPlayer && target instanceof net.minecraft.server.level.ServerPlayer) { + org.bukkit.entity.Player collided = (org.bukkit.entity.Player) target.getBukkitEntity(); + org.bukkit.entity.Player shooter = (org.bukkit.entity.Player) owner.getBukkitEntity(); +- if (!shooter.canSee(collided)) { ++ // Cheetah start - Added ProjectileAllowCollideWithPlayerEvent ++ net.gommehd.cheetah.event.entity.ProjectileAllowCollideWithPlayerEvent allowCollideEvent = org.bukkit.craftbukkit.event.CraftEventFactory.callProjectileAllowCollideWithPlayerEvent(this, target); ++ if (!allowCollideEvent.isAllowCollide() && !shooter.canSee(collided)) { ++ // Cheetah end + return false; + } + } diff --git a/cheetah-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java.patch b/cheetah-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java.patch new file mode 100644 index 0000000..b7d0ee3 --- /dev/null +++ b/cheetah-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java.patch @@ -0,0 +1,30 @@ +--- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java ++++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +@@ -1479,7 +_,10 @@ + com.destroystokyo.paper.event.entity.ProjectileCollideEvent event = new com.destroystokyo.paper.event.entity.ProjectileCollideEvent(projectile, collided); + + if (projectile.getShooter() instanceof Player && collided instanceof Player) { +- if (!((Player) projectile.getShooter()).canSee((Player) collided)) { ++ // Cheetah start - Added ProjectileAllowCollideWithPlayerEvent ++ net.gommehd.cheetah.event.entity.ProjectileAllowCollideWithPlayerEvent allowCollideEvent = callProjectileAllowCollideWithPlayerEvent(entity, position.getEntity()); ++ if (!allowCollideEvent.isAllowCollide() && !((Player) projectile.getShooter()).canSee((Player) collided)) { ++ // Cheetah end + event.setCancelled(true); + return event; + } +@@ -1489,6 +_,15 @@ + return event; + } + // Paper end ++ ++ // Cheetah start - Added ProjectileAllowCollideWithPlayerEvent ++ public static net.gommehd.cheetah.event.entity.ProjectileAllowCollideWithPlayerEvent callProjectileAllowCollideWithPlayerEvent(Entity entity, Entity player) { ++ Projectile projectile = (Projectile) entity.getBukkitEntity(); ++ net.gommehd.cheetah.event.entity.ProjectileAllowCollideWithPlayerEvent event = new net.gommehd.cheetah.event.entity.ProjectileAllowCollideWithPlayerEvent(projectile, (Player) player.getBukkitEntity()); ++ event.callEvent(); ++ return event; ++ } ++ // Cheetah end + + public static ProjectileLaunchEvent callProjectileLaunchEvent(Entity entity) { + Projectile bukkitEntity = (Projectile) entity.getBukkitEntity(); diff --git a/patches/api/0002-added-ProjectileAllowCollideWithPlayerEvent.patch b/patches/api/0002-added-ProjectileAllowCollideWithPlayerEvent.patch deleted file mode 100644 index 011561b..0000000 --- a/patches/api/0002-added-ProjectileAllowCollideWithPlayerEvent.patch +++ /dev/null @@ -1,85 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Jendrik Eggers -Date: Tue, 18 Oct 2022 22:53:50 +0200 -Subject: [PATCH] added ProjectileAllowCollideWithPlayerEvent - - -diff --git a/src/main/java/net/gommehd/cheetah/event/entity/ProjectileAllowCollideWithPlayerEvent.java b/src/main/java/net/gommehd/cheetah/event/entity/ProjectileAllowCollideWithPlayerEvent.java -new file mode 100644 -index 0000000000000000000000000000000000000000..39cbaec3aa22ed69649be1ce226fe7456a977ca0 ---- /dev/null -+++ b/src/main/java/net/gommehd/cheetah/event/entity/ProjectileAllowCollideWithPlayerEvent.java -@@ -0,0 +1,73 @@ -+package net.gommehd.cheetah.event.entity; -+ -+import org.bukkit.entity.Player; -+import org.bukkit.entity.Projectile; -+import org.bukkit.event.HandlerList; -+import org.bukkit.event.entity.EntityEvent; -+import org.jetbrains.annotations.NotNull; -+ -+/** -+ * Called when a projectile collides with a player -+ * -+ * @author TrainmasterHD | Jendrik E. -+ * @since 18.10.2022 -+ */ -+public class ProjectileAllowCollideWithPlayerEvent extends EntityEvent { -+ private static final HandlerList handlerList = new HandlerList(); -+ private final Player collidedWith; -+ private boolean allowCollide = false; -+ -+ public ProjectileAllowCollideWithPlayerEvent(@NotNull Projectile what, @NotNull Player collidedWith) { -+ super(what); -+ this.collidedWith = collidedWith; -+ } -+ -+ /** -+ * Get the projectile that collided -+ * -+ * @return the projectile that collided -+ */ -+ @NotNull -+ public Projectile getEntity() { -+ return (Projectile) super.getEntity(); -+ } -+ -+ /** -+ * Get the entity the projectile collided with -+ * -+ * @return the entity collided with -+ */ -+ @NotNull -+ public Player getCollidedWith() { -+ return collidedWith; -+ } -+ -+ /** -+ * Set if the projectile should be allowed to collide with the player -+ * -+ * @param allowCollide true if the projectile should be allowed to collide with the player, otherwise false -+ */ -+ public void setAllowCollide(final boolean allowCollide) { -+ this.allowCollide = allowCollide; -+ } -+ -+ /** -+ * If colliding with the player is allowed -+ * -+ * @return true if it is allowed, otherwise false -+ */ -+ public boolean isAllowCollide() { -+ return allowCollide; -+ } -+ -+ @NotNull -+ public static HandlerList getHandlerList() { -+ return handlerList; -+ } -+ -+ @NotNull -+ @Override -+ public HandlerList getHandlers() { -+ return handlerList; -+ } -+} diff --git a/patches/server/0004-added-ProjectileAllowCollideWithPlayerEvent.patch b/patches/server/0004-added-ProjectileAllowCollideWithPlayerEvent.patch deleted file mode 100644 index 70e3367..0000000 --- a/patches/server/0004-added-ProjectileAllowCollideWithPlayerEvent.patch +++ /dev/null @@ -1,54 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Jendrik Eggers -Date: Tue, 18 Oct 2022 22:53:50 +0200 -Subject: [PATCH] added ProjectileAllowCollideWithPlayerEvent - - -diff --git a/src/main/java/net/minecraft/world/entity/projectile/Projectile.java b/src/main/java/net/minecraft/world/entity/projectile/Projectile.java -index 9a7b56b653848974e1194eb4f6d40cb99a96ff57..c4b18f924f8d905a9ced0d0fd741b8f68276ddd2 100644 ---- a/src/main/java/net/minecraft/world/entity/projectile/Projectile.java -+++ b/src/main/java/net/minecraft/world/entity/projectile/Projectile.java -@@ -420,7 +420,10 @@ public abstract class Projectile extends Entity implements TraceableEntity { - if (entity1 instanceof net.minecraft.server.level.ServerPlayer && entity instanceof net.minecraft.server.level.ServerPlayer) { - org.bukkit.entity.Player collided = (org.bukkit.entity.Player) entity.getBukkitEntity(); - org.bukkit.entity.Player shooter = (org.bukkit.entity.Player) entity1.getBukkitEntity(); -- if (!shooter.canSee(collided)) { -+ // Cheetah start - Added ProjectileAllowCollideWithPlayerEvent -+ net.gommehd.cheetah.event.entity.ProjectileAllowCollideWithPlayerEvent allowCollideEvent = org.bukkit.craftbukkit.event.CraftEventFactory.callProjectileAllowCollideWithPlayerEvent(this, entity); -+ if (!allowCollideEvent.isAllowCollide() && !shooter.canSee(collided)) { -+ // Cheetah end - return false; - } - } -diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index e37aaf77f94b97b736cc20ef070cefdff0400188..37eacb6f0ebe1bf32e47d8e61562ad3a973dd534 100644 ---- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -+++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -@@ -1479,7 +1479,10 @@ public class CraftEventFactory { - com.destroystokyo.paper.event.entity.ProjectileCollideEvent event = new com.destroystokyo.paper.event.entity.ProjectileCollideEvent(projectile, collided); - - if (projectile.getShooter() instanceof Player && collided instanceof Player) { -- if (!((Player) projectile.getShooter()).canSee((Player) collided)) { -+ // Cheetah start - Added ProjectileAllowCollideWithPlayerEvent -+ net.gommehd.cheetah.event.entity.ProjectileAllowCollideWithPlayerEvent allowCollideEvent = callProjectileAllowCollideWithPlayerEvent(entity, position.getEntity()); -+ if (!allowCollideEvent.isAllowCollide() && !((Player) projectile.getShooter()).canSee((Player) collided)) { -+ // Cheetah end - event.setCancelled(true); - return event; - } -@@ -1490,6 +1493,15 @@ public class CraftEventFactory { - } - // Paper end - -+ // Cheetah start - Added ProjectileAllowCollideWithPlayerEvent -+ public static net.gommehd.cheetah.event.entity.ProjectileAllowCollideWithPlayerEvent callProjectileAllowCollideWithPlayerEvent(Entity entity, Entity player) { -+ Projectile projectile = (Projectile) entity.getBukkitEntity(); -+ net.gommehd.cheetah.event.entity.ProjectileAllowCollideWithPlayerEvent event = new net.gommehd.cheetah.event.entity.ProjectileAllowCollideWithPlayerEvent(projectile, (Player) player.getBukkitEntity()); -+ event.callEvent(); -+ return event; -+ } -+ // Cheetah end -+ - public static ProjectileLaunchEvent callProjectileLaunchEvent(Entity entity) { - Projectile bukkitEntity = (Projectile) entity.getBukkitEntity(); - ProjectileLaunchEvent event = new ProjectileLaunchEvent(bukkitEntity);