From 023a4ff1ae91270733dcf45fc4bbf4b212177023 Mon Sep 17 00:00:00 2001 From: Anuken Date: Tue, 1 Sep 2026 17:18:34 -0400 Subject: [PATCH] Fixed logic privileged access check --- core/src/mindustry/logic/LAccess.java | 11 ++++++++--- core/src/mindustry/logic/LExecutor.java | 2 +- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/core/src/mindustry/logic/LAccess.java b/core/src/mindustry/logic/LAccess.java index cbd7d55eb8..b5beef05d6 100644 --- a/core/src/mindustry/logic/LAccess.java +++ b/core/src/mindustry/logic/LAccess.java @@ -86,8 +86,9 @@ public enum LAccess{ public final String[] params; public final boolean isObj; + public boolean privileged; - public static final EnumSet privilegedAccess = EnumSet.of(cameraX, cameraY, cameraWidth, cameraHeight); + private static final ObjectSet privilegedAccess = ObjectSet.with(cameraX, cameraY, cameraWidth, cameraHeight); public static final LAccess[] all = values(), @@ -96,8 +97,12 @@ public enum LAccess{ controls = Seq.select(all, t -> t.params.length > 0).toArray(LAccess.class), settable = {x, y, velocityX, velocityY, rotation, speed, armor, health, shield, team, flag, totalPower, payloadType, bulletTime, bulletLifetime}; - public boolean isPrivileged(){ - return privilegedAccess.contains(this); + static{ + privilegedAccess.each(l -> l.privileged = privilegedAccess.contains(l)); + } + + private boolean isPrivileged(){ + return privileged = privilegedAccess.contains(this); } LAccess(String... params){ diff --git a/core/src/mindustry/logic/LExecutor.java b/core/src/mindustry/logic/LExecutor.java index 2f63150a7c..1268dde9f4 100644 --- a/core/src/mindustry/logic/LExecutor.java +++ b/core/src/mindustry/logic/LExecutor.java @@ -693,7 +693,7 @@ public class LExecutor{ if(sense instanceof Content co){ to.setnum(se.sense(co)); return; - }else if(sense instanceof LAccess la && (exec.privileged || !la.isPrivileged())){ + }else if(sense instanceof LAccess la && (exec.privileged || !la.privileged)){ Object objOut = se.senseObject(la); if(objOut == Senseable.noSensed){