9
0
mirror of https://github.com/Winds-Studio/Leaf.git synced 2025-12-28 19:39:17 +00:00
Files
Leaf/leaf-server/minecraft-patches/features/0154-Remove-stream-in-CraftWorld-spawnParticle.patch
2025-10-29 02:23:32 -04:00

67 lines
3.4 KiB
Diff

From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Dreeam <61569423+Dreeam-qwq@users.noreply.github.com>
Date: Wed, 29 Oct 2025 02:13:08 -0400
Subject: [PATCH] Remove stream in CraftWorld#spawnParticle
diff --git a/net/minecraft/server/level/ServerLevel.java b/net/minecraft/server/level/ServerLevel.java
index 220061621a676e5cefd6a442b40f216f6dced60c..c73d4ca35ad35b21a9df283a18928d7738c172d0 100644
--- a/net/minecraft/server/level/ServerLevel.java
+++ b/net/minecraft/server/level/ServerLevel.java
@@ -2108,7 +2108,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
for (int i1 = 0; i1 < receivers.size(); i1++) { // Paper - particle API
ServerPlayer serverPlayer = receivers.get(i1); // Paper - particle API
- if (sender != null && !serverPlayer.getBukkitEntity().canSee(sender.getBukkitEntity())) continue; // CraftBukkit
+ if (sender != null && !serverPlayer.getBukkitEntity().canSee(sender.getBukkitEntity())) continue; // CraftBukkit // Leaf - Remove stream in CraftWorld#spawnParticle - diff on change
if (this.sendParticles(serverPlayer, overrideLimiter, posX, posY, posZ, clientboundLevelParticlesPacket)) {
i++;
}
@@ -2117,6 +2117,46 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
return i;
}
+ // Leaf start - Remove stream in CraftWorld#spawnParticle
+ // Copy from ServerLevel#sendParticlesSource
+ public <T extends ParticleOptions> void sendParticlesSourceBukkit(
+ List<org.bukkit.entity.Player> bukkitReceivers,
+ @Nullable Entity sender,
+ T type,
+ boolean overrideLimiter,
+ boolean alwaysShow,
+ double posX,
+ double posY,
+ double posZ,
+ int particleCount,
+ double xOffset,
+ double yOffset,
+ double zOffset,
+ double speed
+ ) {
+ ClientboundLevelParticlesPacket clientboundLevelParticlesPacket = new ClientboundLevelParticlesPacket(
+ type, overrideLimiter, alwaysShow, posX, posY, posZ, (float) xOffset, (float) yOffset, (float) zOffset, (float) speed, particleCount
+ );
+
+ if (bukkitReceivers == null) {
+ for (int i = 0, size = players.size(); i < size; i++) { // Paper - particle API
+ ServerPlayer serverPlayer = players.get(i); // Paper - particle API
+ if (sender != null && !serverPlayer.getBukkitEntity().canSee(sender.getBukkitEntity())) continue; // CraftBukkit
+
+ this.sendParticles(serverPlayer, overrideLimiter, posX, posY, posZ, clientboundLevelParticlesPacket);
+ }
+ } else {
+ for (int i = 0, size = bukkitReceivers.size(); i < size; i++) { // Paper - particle API
+ org.bukkit.entity.Player bukkitPlayer = bukkitReceivers.get(i); // Paper - particle API
+ ServerPlayer serverPlayer = ((org.bukkit.craftbukkit.entity.CraftPlayer) bukkitPlayer).getHandle();
+ if (sender != null && !serverPlayer.getBukkitEntity().canSee(sender.getBukkitEntity())) continue; // CraftBukkit
+
+ this.sendParticles(serverPlayer, overrideLimiter, posX, posY, posZ, clientboundLevelParticlesPacket);
+ }
+ }
+ }
+ // Leaf end - Remove stream in CraftWorld#spawnParticle
+
public <T extends ParticleOptions> boolean sendParticles(
ServerPlayer player,
T particle,