f37381ea8a
Removes synchronization from sending packets Makes normal packet sends no longer need to be wrapped and queued like it use to work. Adds more packet queue immunities on top of keep alive to let the following scenarios go out without delay: - Keep Alive - Chat - Kick - All of the packets during the Player Joined World event Hoping that latter one helps join timeout issues more too for slow connections. Removes processing packet queue off of main thread - for the few cases where it is allowed, order is not necessary nor should it even be happening concurrently in first place (handshaking/login/status) Ensures packets sent asynchronously are dispatched on main thread This helps ensure safety for ProtocolLib as packet listeners are commonly accessing world state. This will allow you to schedule a packet to be sent async, but itll be dispatched sync for packet listeners to process. This should solve some deadlock risks This may provide a decent performance improvement because thread synchronization incurs a cache reset so by avoiding ever entering a synchronized block, we get to avoid that, and packet sending is a really hot activity.
79 Zeilen
3.3 KiB
Diff
79 Zeilen
3.3 KiB
Diff
From 6b6cdf8d8327e083ce4870d76cc47be1e12460b6 Mon Sep 17 00:00:00 2001
|
|
From: kickash32 <kickash32@gmail.com>
|
|
Date: Sat, 21 Dec 2019 15:22:09 -0500
|
|
Subject: [PATCH] Tracking Range Improvements
|
|
|
|
Sets tracking range of watermobs to animals instead of misc and simplifies code
|
|
|
|
Also ignores Enderdragon, defaulting it to Mojang's setting
|
|
|
|
diff --git a/src/main/java/net/minecraft/server/PlayerChunkMap.java b/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
|
index 692388821a7..6eb05591317 100644
|
|
--- a/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
|
+++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
|
@@ -1737,6 +1737,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
|
while (iterator.hasNext()) {
|
|
Entity entity = (Entity) iterator.next();
|
|
int j = entity.getEntityType().getChunkRange() * 16;
|
|
+ j = org.spigotmc.TrackingRange.getEntityTrackingRange(entity, j); // Paper
|
|
|
|
if (j > i) {
|
|
i = j;
|
|
diff --git a/src/main/java/org/spigotmc/TrackingRange.java b/src/main/java/org/spigotmc/TrackingRange.java
|
|
index 6f8e6c1d079..765bdaf9b52 100644
|
|
--- a/src/main/java/org/spigotmc/TrackingRange.java
|
|
+++ b/src/main/java/org/spigotmc/TrackingRange.java
|
|
@@ -1,6 +1,7 @@
|
|
package org.spigotmc;
|
|
|
|
import net.minecraft.server.Entity;
|
|
+import net.minecraft.server.EntityEnderDragon; // Paper
|
|
import net.minecraft.server.EntityExperienceOrb;
|
|
import net.minecraft.server.EntityGhast;
|
|
import net.minecraft.server.EntityItem;
|
|
@@ -25,26 +26,26 @@ public class TrackingRange
|
|
if ( entity instanceof EntityPlayer )
|
|
{
|
|
return config.playerTrackingRange;
|
|
- } else if ( entity.activationType == ActivationRange.ActivationType.MONSTER || entity.activationType == ActivationRange.ActivationType.RAIDER )
|
|
- {
|
|
- return config.monsterTrackingRange;
|
|
- } else if ( entity instanceof EntityGhast )
|
|
- {
|
|
- if ( config.monsterTrackingRange > config.monsterActivationRange )
|
|
- {
|
|
+ // Paper start - Simplify and set water mobs to animal tracking range
|
|
+ }
|
|
+ switch (entity.activationType) {
|
|
+ case RAIDER:
|
|
+ case MONSTER:
|
|
+ case FLYING_MONSTER:
|
|
return config.monsterTrackingRange;
|
|
- } else
|
|
- {
|
|
- return config.monsterActivationRange;
|
|
- }
|
|
- } else if ( entity.activationType == ActivationRange.ActivationType.ANIMAL )
|
|
- {
|
|
- return config.animalTrackingRange;
|
|
- } else if ( entity instanceof EntityItemFrame || entity instanceof EntityPainting || entity instanceof EntityItem || entity instanceof EntityExperienceOrb )
|
|
+ case WATER:
|
|
+ case VILLAGER:
|
|
+ case ANIMAL:
|
|
+ return config.animalTrackingRange;
|
|
+ case MISC:
|
|
+ }
|
|
+ if ( entity instanceof EntityItemFrame || entity instanceof EntityPainting || entity instanceof EntityItem || entity instanceof EntityExperienceOrb )
|
|
+ // Paper end
|
|
{
|
|
return config.miscTrackingRange;
|
|
} else
|
|
{
|
|
+ if (entity instanceof EntityEnderDragon) return defaultRange; // Paper - enderdragon is exempt
|
|
return config.otherTrackingRange;
|
|
}
|
|
}
|
|
--
|
|
2.26.2
|
|
|