feat(delta): hook Display tracking budget through TrackingRange (no MC patch needed)
Build Delta / Build paperclip jar (push) Failing after 5m14s
Build Delta / Build paperclip jar (push) Failing after 5m14s
This commit is contained in:
@@ -18,6 +18,24 @@ public final class DeltaTracking {
|
|||||||
private DeltaTracking() {
|
private DeltaTracking() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Клампит дальность трекинга Display-сущностей.
|
||||||
|
* Вызывается из {@code org.spigotmc.TrackingRange#getEntityTrackingRange},
|
||||||
|
* который сам лежит в git-отслеживаемом исходнике Paper — поэтому патчить
|
||||||
|
* декомпилированный код Minecraft не требуется.
|
||||||
|
*
|
||||||
|
* @param range дальность из spigot.yml ({@code entity-tracking-range.display})
|
||||||
|
* @return эффективную дальность
|
||||||
|
*/
|
||||||
|
public static int clampDisplayRange(final int range) {
|
||||||
|
final DeltaConfig cfg = delta();
|
||||||
|
if (cfg == null || !cfg.displayTrackingRangeEnabled) {
|
||||||
|
return range;
|
||||||
|
}
|
||||||
|
final int configured = cfg.displayTrackingRange;
|
||||||
|
return configured <= 0 ? range : Math.min(range, configured);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return эффективную дальность трекинга с учётом Delta-конфига
|
* @return эффективную дальность трекинга с учётом Delta-конфига
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -45,7 +45,12 @@ public final class TrackingRange {
|
|||||||
if (entity instanceof ItemFrame || entity instanceof Painting || entity instanceof ItemEntity || entity instanceof ExperienceOrb) {
|
if (entity instanceof ItemFrame || entity instanceof Painting || entity instanceof ItemEntity || entity instanceof ExperienceOrb) {
|
||||||
return config.miscTrackingRange;
|
return config.miscTrackingRange;
|
||||||
} else if (entity instanceof Display) {
|
} else if (entity instanceof Display) {
|
||||||
return config.displayTrackingRange;
|
// Delta start - optional Display range budget (paper-global.yml -> delta)
|
||||||
|
// Display entities have no physics, collision or gameplay meaning, so trimming
|
||||||
|
// their tracking range is safe: the client stops seeing them, server state
|
||||||
|
// stays correct. Off by default so stock Paper behaviour is unchanged.
|
||||||
|
return me.sashegdev.delta.DeltaTracking.clampDisplayRange(config.displayTrackingRange);
|
||||||
|
// Delta end
|
||||||
} else {
|
} else {
|
||||||
if (entity instanceof net.minecraft.world.entity.boss.enderdragon.EnderDragon) {
|
if (entity instanceof net.minecraft.world.entity.boss.enderdragon.EnderDragon) {
|
||||||
// Exempt ender dragon
|
// Exempt ender dragon
|
||||||
|
|||||||
Reference in New Issue
Block a user