Skip to content

Commit 4a5dbe6

Browse files
authored
Merge pull request #44 from HaHaWTH/perf/entity-tracker-include-y
Include y range for entity tracking
2 parents 93171d9 + 351af19 commit 4a5dbe6

File tree

4 files changed

+45
-0
lines changed

4 files changed

+45
-0
lines changed

src/main/java/github/kasuminova/stellarcore/common/config/category/Performance.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -178,6 +178,11 @@ public static class Vanilla {
178178
@Config.Name("EntityTrackerImprovements")
179179
public boolean entitytracker = true;
180180

181+
@Config.Comment("(Server Performance) Include Y distance checks when tracking entities.")
182+
@Config.RequiresMcRestart
183+
@Config.Name("EntityTrackerIncludeY")
184+
public boolean entitytrackerIncludeY = false;
185+
181186
@Config.Comment("(Server Performance) Improving WorldServer#getPendingBlockUpdates Performance with Improved Data Structures.")
182187
@Config.RequiresMcRestart
183188
@Config.Name("WorldServerGetPendingBlockUpdatesImprovements")

src/main/java/github/kasuminova/stellarcore/mixin/StellarCoreEarlyMixinLoader.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ public class StellarCoreEarlyMixinLoader implements IFMLLoadingPlugin {
3131
addMixinCFG("mixins.stellar_core_minecraft_chunktequeue.json", () -> StellarCoreConfig.PERFORMANCE.vanilla.chunkTEQueue);
3232
addMixinCFG("mixins.stellar_core_minecraft_classmultimap.json", () -> StellarCoreConfig.PERFORMANCE.vanilla.classMultiMap);
3333
addMixinCFG("mixins.stellar_core_minecraft_entitytracker.json", () -> StellarCoreConfig.PERFORMANCE.vanilla.entitytracker);
34+
addMixinCFG("mixins.stellar_core_minecraft_entitytracker_y_range.json", () -> StellarCoreConfig.PERFORMANCE.vanilla.entitytrackerIncludeY);
3435
addMixinCFG("mixins.stellar_core_minecraft_itemstack_cap.json", () -> StellarCoreConfig.PERFORMANCE.vanilla.asyncItemStackCapabilityInit && !(CensoredASMCompat.isPresent() && CensoredASMCompat.checkDelayItemStackCapInitEnabled()));
3536
addMixinCFG("mixins.stellar_core_minecraft_longnbtkiller.json", () -> StellarCoreConfig.BUG_FIXES.vanilla.longNBTKiller);
3637
addMixinCFG("mixins.stellar_core_minecraft_modelblock.json", () -> StellarCoreConfig.PERFORMANCE.vanilla.modelBlockStringCanonicalization && CensoredASMCompat.isPresent());
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package github.kasuminova.stellarcore.mixin.minecraft.entitytracker.y_range;
2+
3+
import com.llamalad7.mixinextras.sugar.Local;
4+
import net.minecraft.entity.EntityTrackerEntry;
5+
import net.minecraft.entity.player.EntityPlayerMP;
6+
import org.spongepowered.asm.mixin.Mixin;
7+
import org.spongepowered.asm.mixin.Shadow;
8+
import org.spongepowered.asm.mixin.Unique;
9+
import org.spongepowered.asm.mixin.injection.At;
10+
import org.spongepowered.asm.mixin.injection.Inject;
11+
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
12+
13+
@Mixin(EntityTrackerEntry.class)
14+
public class MixinEntityTrackerEntry {
15+
@Shadow
16+
private long encodedPosY;
17+
@Unique
18+
private static final int ENTITY_Y_TRACKING_RANGE = Integer.getInteger("stellarcore.entitytracker.y_range", -1);
19+
20+
@Inject(method = "isVisibleTo", at = @At("RETURN"), cancellable = true)
21+
private void onIsVisibleTo(EntityPlayerMP playerMP, CallbackInfoReturnable<Boolean> cir, @Local(ordinal = 0) int range) {
22+
if (cir.getReturnValue()) {
23+
double yDistance = Math.abs(playerMP.posY - (double) this.encodedPosY / 4096.0D);
24+
if ((ENTITY_Y_TRACKING_RANGE > 0 && yDistance > ENTITY_Y_TRACKING_RANGE) || yDistance > range) {
25+
cir.setReturnValue(false);
26+
}
27+
}
28+
}
29+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
{
2+
"package": "github.kasuminova.stellarcore.mixin.minecraft.entitytracker.y_range",
3+
"refmap": "mixins.stellar_core.refmap.json",
4+
"target": "@env(DEFAULT)",
5+
"minVersion": "0.8",
6+
"compatibilityLevel": "JAVA_8",
7+
"mixins": [
8+
"MixinEntityTrackerEntry"
9+
]
10+
}

0 commit comments

Comments
 (0)