Skip to content

Commit

Permalink
Dont throw in async thread & Clean up (#222)
Browse files Browse the repository at this point in the history
* Dont throw in async thread

* Fix typo
  • Loading branch information
HaHaWTH authored Feb 11, 2025
1 parent b26dc8d commit 3b6ce17
Show file tree
Hide file tree
Showing 4 changed files with 19 additions and 26 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,15 @@ Subject: [PATCH] Cache player profileResult


diff --git a/net/minecraft/server/network/ServerLoginPacketListenerImpl.java b/net/minecraft/server/network/ServerLoginPacketListenerImpl.java
index 069477e524a28b20a0289221858bdc802704a890..595cfb31dd2c026ef9946429608c2c7497bf9de0 100644
index 069477e524a28b20a0289221858bdc802704a890..21ecbbdd97204477dadd2ade1d93f64cf91c7dfe 100644
--- a/net/minecraft/server/network/ServerLoginPacketListenerImpl.java
+++ b/net/minecraft/server/network/ServerLoginPacketListenerImpl.java
@@ -71,6 +71,11 @@ public class ServerLoginPacketListenerImpl implements ServerLoginPacketListener,
private net.minecraft.server.level.ServerPlayer player; // CraftBukkit
public boolean iKnowThisMayNotBeTheBestIdeaButPleaseDisableUsernameValidation = false; // Paper - username validation overriding
private int velocityLoginMessageId = -1; // Paper - Add Velocity IP Forwarding Support
+ // Leaf start - Cache player profileResult
+ private static final com.github.benmanes.caffeine.cache.Cache<String, ProfileResult> playerProfileResultCahce = com.github.benmanes.caffeine.cache.Caffeine.newBuilder()
+ private static final com.github.benmanes.caffeine.cache.Cache<String, ProfileResult> playerProfileResultCache = com.github.benmanes.caffeine.cache.Caffeine.newBuilder()
+ .expireAfterWrite(org.dreeam.leaf.config.modules.misc.Cache.cachePlayerProfileResultTimeout, java.util.concurrent.TimeUnit.MINUTES)
+ .build();
+ // Leaf end - Cache player profileResult
Expand All @@ -30,13 +30,13 @@ index 069477e524a28b20a0289221858bdc802704a890..595cfb31dd2c026ef9946429608c2c74
+ // Leaf start - Cache player profileResult
+ ProfileResult profileResult;
+ if (org.dreeam.leaf.config.modules.misc.Cache.cachePlayerProfileResult) {
+ profileResult = playerProfileResultCahce.getIfPresent(string1);
+ profileResult = playerProfileResultCache.getIfPresent(string1);
+
+ if (profileResult == null) {
+ profileResult = ServerLoginPacketListenerImpl.this.server
+ .getSessionService()
+ .hasJoinedServer(string1, string, this.getAddress());
+ playerProfileResultCahce.put(string1, profileResult);
+ playerProfileResultCache.put(string1, profileResult);
+ }
+ } else {
+ profileResult = ServerLoginPacketListenerImpl.this.server
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ Original license: MIT
Original project: https://github.com/PurpurMC/Purpur

diff --git a/net/minecraft/server/level/ServerEntity.java b/net/minecraft/server/level/ServerEntity.java
index ddf2a5e2cfeaa666a081dd857d6a6003d65d0e00..1b9e34574fb5b8955fa37795baebf588fdaeca2a 100644
index ddf2a5e2cfeaa666a081dd857d6a6003d65d0e00..d8298c7925e3bcea07ead4d438478cc51abcfa16 100644
--- a/net/minecraft/server/level/ServerEntity.java
+++ b/net/minecraft/server/level/ServerEntity.java
@@ -199,6 +199,8 @@ public class ServerEntity {
Expand All @@ -21,28 +21,22 @@ index ddf2a5e2cfeaa666a081dd857d6a6003d65d0e00..1b9e34574fb5b8955fa37795baebf588
if (this.entity.hasImpulse || this.trackDelta || this.entity instanceof LivingEntity && ((LivingEntity)this.entity).isFallFlying()) {
Vec3 deltaMovement = this.entity.getDeltaMovement();
if (deltaMovement != this.lastSentMovement) { // SparklyPaper start - skip distanceToSqr call in ServerEntity#sendChanges if the delta movement hasn't changed
@@ -275,6 +277,27 @@ public class ServerEntity {
@@ -275,6 +277,21 @@ public class ServerEntity {
}
}

+ // Purpur start
+ private boolean isUselessMoveEntityPacket(@Nullable Packet<?> packet) {
+ if (packet instanceof ClientboundMoveEntityPacket moveEntityPacket) {
+ switch (packet) {
+ case ClientboundMoveEntityPacket.Pos ignored -> {
+ return moveEntityPacket.getXa() == 0 && moveEntityPacket.getYa() == 0 && moveEntityPacket.getZa() == 0;
+ }
+ case ClientboundMoveEntityPacket.PosRot ignored -> {
+ return moveEntityPacket.getXa() == 0 && moveEntityPacket.getYa() == 0 && moveEntityPacket.getZa() == 0 && moveEntityPacket.getyRot() == 0 && moveEntityPacket.getxRot() == 0;
+ }
+ case ClientboundMoveEntityPacket.Rot ignored -> {
+ return moveEntityPacket.getyRot() == 0 && moveEntityPacket.getxRot() == 0;
+ }
+ default -> {
+ }
+ }
+ }
+ return false;
+ if (!(packet instanceof ClientboundMoveEntityPacket moveEntityPacket)) return false;
+ return switch (packet) {
+ case ClientboundMoveEntityPacket.Pos ignored ->
+ moveEntityPacket.getXa() == 0 && moveEntityPacket.getYa() == 0 && moveEntityPacket.getZa() == 0;
+ case ClientboundMoveEntityPacket.PosRot ignored ->
+ moveEntityPacket.getXa() == 0 && moveEntityPacket.getYa() == 0 && moveEntityPacket.getZa() == 0 && moveEntityPacket.getyRot() == 0 && moveEntityPacket.getxRot() == 0;
+ case ClientboundMoveEntityPacket.Rot ignored ->
+ moveEntityPacket.getyRot() == 0 && moveEntityPacket.getxRot() == 0;
+ default -> false;
+ };
+ }
+ // Purpur end
+
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -164,7 +164,7 @@ index f106373ef3ac4a8685c2939c9e8361688a285913..51ae390c68e7a3aa193329cc3bc47ca6
public boolean visible = true;

diff --git a/net/minecraft/server/level/ServerEntity.java b/net/minecraft/server/level/ServerEntity.java
index 1b9e34574fb5b8955fa37795baebf588fdaeca2a..2cca2c7b826dc64c0642751fda006f65e80befc1 100644
index d8298c7925e3bcea07ead4d438478cc51abcfa16..75670751064add901c2628d53d8028350f966c5d 100644
--- a/net/minecraft/server/level/ServerEntity.java
+++ b/net/minecraft/server/level/ServerEntity.java
@@ -110,8 +110,16 @@ public class ServerEntity {
Expand All @@ -186,7 +186,7 @@ index 1b9e34574fb5b8955fa37795baebf588fdaeca2a..2cca2c7b826dc64c0642751fda006f65
}
}
);
@@ -441,12 +449,15 @@ public class ServerEntity {
@@ -435,12 +443,15 @@ public class ServerEntity {
if (this.entity instanceof LivingEntity) {
Set<AttributeInstance> attributesToSync = ((LivingEntity)this.entity).getAttributes().getAttributesToSync();
if (!attributesToSync.isEmpty()) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package org.dreeam.leaf.async.path;

import com.destroystokyo.paper.util.SneakyThrow;
import com.google.common.util.concurrent.ThreadFactoryBuilder;

import net.minecraft.server.MinecraftServer;
Expand Down Expand Up @@ -71,7 +70,7 @@ protected static CompletableFuture<Void> queue(@NotNull AsyncPath path) {
.exceptionally(throwable -> {
if (throwable instanceof TimeoutException e) {
LOGGER.warn("Async Pathfinding process timed out", e);
} else SneakyThrow.sneaky(throwable);
} else LOGGER.warn("Error occurred while processing async path", throwable);
return null;
});
}
Expand Down

0 comments on commit 3b6ce17

Please sign in to comment.