diff --git a/patches/server/0056-Polpot-make-make-egg-and-snowball-can-knockback-play.patch b/patches/server/0056-Polpot-make-make-egg-and-snowball-can-knockback-play.patch new file mode 100644 index 00000000..2d5d5d44 --- /dev/null +++ b/patches/server/0056-Polpot-make-make-egg-and-snowball-can-knockback-play.patch @@ -0,0 +1,83 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: lilingfengdev <145678359+lilingfengdev@users.noreply.github.com> +Date: Thu, 18 Jan 2024 13:30:02 +0800 +Subject: [PATCH] Polpot make make egg and snowball can knockback player + + +diff --git a/src/main/java/net/minecraft/world/entity/projectile/Snowball.java b/src/main/java/net/minecraft/world/entity/projectile/Snowball.java +index 440d3d72d8b2dac14f83a83caa5ae9dbf3e979b6..26f1f1c588095d791b24b678c054cccfbbbf0706 100644 +--- a/src/main/java/net/minecraft/world/entity/projectile/Snowball.java ++++ b/src/main/java/net/minecraft/world/entity/projectile/Snowball.java +@@ -3,6 +3,7 @@ package net.minecraft.world.entity.projectile; + import net.minecraft.core.particles.ItemParticleOption; + import net.minecraft.core.particles.ParticleOptions; + import net.minecraft.core.particles.ParticleTypes; ++import net.minecraft.server.level.ServerPlayer; + import net.minecraft.world.entity.Entity; + import net.minecraft.world.entity.EntityType; + import net.minecraft.world.entity.LivingEntity; +@@ -13,6 +14,9 @@ import net.minecraft.world.item.Items; + import net.minecraft.world.level.Level; + import net.minecraft.world.phys.EntityHitResult; + import net.minecraft.world.phys.HitResult; ++// Leaf start ++import org.dreeam.leaf.LeafConfig; ++// Leaf end + + public class Snowball extends ThrowableItemProjectile { + public Snowball(EntityType type, Level world) { +@@ -55,6 +59,12 @@ public class Snowball extends ThrowableItemProjectile { + Entity entity = entityHitResult.getEntity(); + int i = entity.level().purpurConfig.snowballDamage >= 0 ? entity.level().purpurConfig.snowballDamage : entity instanceof Blaze ? 3 : 0; // Purpur + entity.hurt(this.damageSources().thrown(this, this.getOwner()), (float)i); ++ // Leaf - Polpot start - make snowball can knockback player ++ if (LeafConfig.snowballAndEggCanKnockback && entity instanceof ServerPlayer) { ++ entity.hurt(this.damageSources().thrown(this, this.getOwner()), 0.0000001F); ++ ((ServerPlayer) entity).knockback(0.4000000059604645D, this.getX() - entity.getX(), this.getZ() - entity.getZ(), this); ++ } ++ // Leaf - Polpot end + } + + // Purpur start - borrowed and modified code from ThrownPotion#onHitBlock and ThrownPotion#dowseFire +diff --git a/src/main/java/net/minecraft/world/entity/projectile/ThrownEgg.java b/src/main/java/net/minecraft/world/entity/projectile/ThrownEgg.java +index b64ecadae45c2126b92963ac8d118dde76126ddd..8daa0d7ee597f94901948a732df5d5e9e1f670ad 100644 +--- a/src/main/java/net/minecraft/world/entity/projectile/ThrownEgg.java ++++ b/src/main/java/net/minecraft/world/entity/projectile/ThrownEgg.java +@@ -15,6 +15,9 @@ import org.bukkit.entity.EntityType; + import org.bukkit.entity.Player; + import org.bukkit.event.player.PlayerEggThrowEvent; + // CraftBukkit end ++// Leaf start ++import org.dreeam.leaf.LeafConfig; ++// Leaf end + + public class ThrownEgg extends ThrowableItemProjectile { + +@@ -45,7 +48,14 @@ public class ThrownEgg extends ThrowableItemProjectile { + @Override + protected void onHitEntity(EntityHitResult entityHitResult) { + super.onHitEntity(entityHitResult); ++ Entity entity = entityHitResult.getEntity(); // Polpot - make egg can knockback player + entityHitResult.getEntity().hurt(this.damageSources().thrown(this, this.getOwner()), 0.0F); ++ // Leaf - Polpot start - make egg can knockback player ++ if (LeafConfig.snowballAndEggCanKnockback && entity instanceof ServerPlayer) { ++ entity.hurt(this.damageSources().thrown(this, this.getOwner()), 0.0000001F); ++ ((ServerPlayer) entity).knockback(0.4000000059604645D, this.getX() - entity.getX(), this.getZ() - entity.getZ(), this); ++ } ++ // Leaf - Polpot end - make egg can knockback player + } + + @Override +diff --git a/src/main/java/org/dreeam/leaf/LeafConfig.java b/src/main/java/org/dreeam/leaf/LeafConfig.java +index db12eb7e81307cc3fd4fe0602697e32e71289f7e..0439423d1c8b3a9f063595f6df542ce54aa646ab 100644 +--- a/src/main/java/org/dreeam/leaf/LeafConfig.java ++++ b/src/main/java/org/dreeam/leaf/LeafConfig.java +@@ -325,4 +325,8 @@ public class LeafConfig { + private static void getSkipMapItemDataUpdatesIfMapDoesNotHaveCraftMapRenderer() { + skipMapItemDataUpdatesIfMapDoesNotHaveCraftMapRenderer = getBoolean("skipMapItemDataUpdatesIfMapDoesNotHaveCraftMapRenderer",skipMapItemDataUpdatesIfMapDoesNotHaveCraftMapRenderer); + } ++ public static boolean snowballAndEggCanKnockback = false; ++ private static void SnowballAndEggCanKnockback() { ++ snowballAndEggCanKnockback = getBoolean("settings.snowball-egg-knockback-players", snowballAndEggCanKnockback,"Make snowball and egg can knock back player"); ++ } + }