perf(slashblade-exsa): 加速飞剑已命中目标过滤

原因 / Cause:
五类飞剑实体共享 EntityDriveEx 的 alreadyHitEntity 列表;每次 AABB 扫描后的 removeAll 都对历史命中目标线性查询。

修复 / Fix:
将共享的 alreadyHitEntity 从 ArrayList 替换为 HashSet;保持候选列表、选择器、命中处理和生命周期逻辑原样。

性能收益 / Performance:
DriveEx 及其 Phantom、Flare、Hurricane、Lightning 子类扫描结果的历史命中排除由线性成员查找降为均摊常数时间。

兼容性 / Compatibility:
命中集合仅用于 clear、add、addAll 和 removeAll 成员判定,未被迭代或按顺序读取;候选实体仍按原始世界查询顺序处理。

验证 / Validation:
Java 8 下执行 Gradle 8.14.3 build --rerun-tasks --no-daemon --console=plain 成功(test 为 NO-SOURCE)。

Refs #1
This commit is contained in:
layue13 committed 2026-09-05 16:17:26 +08:00
1 parent b68b004ff2
commit 67fd40011a
1 file changed
+3 -2
@@ -30,9 +30,10 @@ package mods.flammpfeil.slashblade.exsa.entity;
import cpw.mods.fml.common.registry.IThrowableEntity;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Random;
import java.util.Set;
import mods.flammpfeil.slashblade.ItemSlashBlade;
import mods.flammpfeil.slashblade.ability.StylishRankManager;
import net.minecraft.block.Block;
@@ -57,7 +58,7 @@ extends Entity
implements IThrowableEntity {
protected Entity thrower;
protected ItemStack blade = null;
protected List<Entity> alreadyHitEntity = new ArrayList<Entity>();
protected Set<Entity> alreadyHitEntity = new HashSet<Entity>();
protected float AttackLevel = 0.0f;
public EntityDriveEx(World par1World) {