From abebad2f5fe9b4d2606c980ec76687666752eea8 Mon Sep 17 00:00:00 2001 From: Anuken Date: Tue, 18 Aug 2026 11:00:55 +0200 Subject: [PATCH] Fixed #12495 --- .../annotations/entity/EntityProcess.java | 28 ++++++++++++++----- .../world/blocks/defense/ShockwaveTower.java | 2 +- 2 files changed, 22 insertions(+), 8 deletions(-) diff --git a/annotations/src/main/java/mindustry/annotations/entity/EntityProcess.java b/annotations/src/main/java/mindustry/annotations/entity/EntityProcess.java index 1216115fda..2641966c75 100644 --- a/annotations/src/main/java/mindustry/annotations/entity/EntityProcess.java +++ b/annotations/src/main/java/mindustry/annotations/entity/EntityProcess.java @@ -20,6 +20,7 @@ import javax.lang.model.element.*; import javax.lang.model.type.*; import java.lang.annotation.*; import java.util.*; +import java.util.regex.*; @SupportedAnnotationTypes({ "mindustry.annotations.Annotations.EntityDef", @@ -29,6 +30,11 @@ import java.util.*; "mindustry.annotations.Annotations.TypeIOHandler" }) public class EntityProcess extends BaseProcessor{ + static final Pattern selfParamPattern = Pattern.compile("this\\.<(.*)>self\\(\\)"); + static final Pattern selfPattern = Pattern.compile("self\\(\\)"); + static final Pattern yieldPattern = Pattern.compile(" yield "); + static final Pattern missingPattern = Pattern.compile("\\/\\*missing\\*\\/"); + Seq definitions = new Seq<>(); Seq groupDefs = new Seq<>(); Seq baseComponents; @@ -77,12 +83,12 @@ public class EntityProcess extends BaseProcessor{ for(Smethod elem : component.methods()){ if(elem.is(Modifier.ABSTRACT) || elem.is(Modifier.NATIVE)) continue; //get all statements in the method, store them - methodBlocks.put(elem.descString(), elem.tree().getBody().toString() - .replaceAll("this\\.<(.*)>self\\(\\)", "this") //fix parameterized self() calls - .replaceAll("self\\(\\)", "this") //fix self() calls - .replaceAll(" yield ", "") //fix enchanced switch - .replaceAll("\\/\\*missing\\*\\/", "var") //fix vars - ); + String body = elem.tree().getBody().toString(); + body = selfParamPattern.matcher(body).replaceAll("this"); //fix parameterized self() calls + body = selfPattern.matcher(body).replaceAll("this"); //fix self() calls + body = yieldPattern.matcher(body).replaceAll(""); //fix enhanced switch + body = missingPattern.matcher(body).replaceAll("var"); //fix vars + methodBlocks.put(elem.descString(), body); } } @@ -566,7 +572,15 @@ public class EntityProcess extends BaseProcessor{ String blockName = elem.up().getSimpleName().toString().toLowerCase().replace("comp", ""); //skip empty blocks - if(str.replace("{", "").replace("\n", "").replace("}", "").replace("\t", "").replace(" ", "").isEmpty()){ + boolean empty = true; + for(int i = 0; i < str.length(); i++){ + char c = str.charAt(i); + if(c != '{' && c != '}' && c != '\n' && c != '\t' && c != ' '){ + empty = false; + break; + } + } + if(empty){ continue; } diff --git a/core/src/mindustry/world/blocks/defense/ShockwaveTower.java b/core/src/mindustry/world/blocks/defense/ShockwaveTower.java index 9def23cf33..9d197bcf5f 100644 --- a/core/src/mindustry/world/blocks/defense/ShockwaveTower.java +++ b/core/src/mindustry/world/blocks/defense/ShockwaveTower.java @@ -73,7 +73,7 @@ public class ShockwaveTower extends Block{ if(potentialEfficiency > 0 && (reloadCounter += edelta()) >= reload && timer(timerCheck, checkInterval)){ targets.clear(); Groups.bullet.intersect(x - range, y - range, range * 2, range * 2, b -> { - if(b.team != team && b.type.hittable){ + if(b.team != team && b.type.hittable && b.within(x, y, range + 1f)){ targets.add(b); } });