re-inline Goal.Flag iteration
This commit is contained in:
@@ -85,10 +85,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||
+ WrappedGoal goalWrapped = iterator.next();
|
||||
+ if (goalWrapped.getGoal() != goal) {
|
||||
+ continue;
|
||||
+ }
|
||||
}
|
||||
+ if (goalWrapped.isRunning()) {
|
||||
+ goalWrapped.stop();
|
||||
}
|
||||
+ }
|
||||
+ iterator.remove();
|
||||
}
|
||||
+ // Paper end - remove streams from pathfindergoalselector
|
||||
@@ -102,20 +102,15 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||
private static boolean goalCanBeReplacedForAllFlags(WrappedGoal goal, Map<Goal.Flag, WrappedGoal> goalsByControl) {
|
||||
- for(Goal.Flag flag : goal.getFlags()) {
|
||||
+ // Paper start
|
||||
+ return !goal.getFlags().anyMatch(GOAL_FLAG_VALUES, flag -> {
|
||||
+ long flagIterator = goal.getFlags().getBackingSet();
|
||||
+ int wrappedGoalSize = goal.getFlags().size();
|
||||
+ for (int i = 0; i < wrappedGoalSize; ++i) {
|
||||
+ final Goal.Flag flag = GOAL_FLAG_VALUES[Long.numberOfTrailingZeros(flagIterator)];
|
||||
+ flagIterator ^= io.papermc.paper.util.IntegerUtil.getTrailingBit(flagIterator);
|
||||
+ // Paper end
|
||||
if (!goalsByControl.getOrDefault(flag, NO_GOAL).canBeReplacedBy(goal)) {
|
||||
- return false;
|
||||
+ return true;
|
||||
return false;
|
||||
}
|
||||
- }
|
||||
-
|
||||
- return true;
|
||||
+ return false;
|
||||
+ });
|
||||
+ // Paper end
|
||||
}
|
||||
|
||||
public void tick() {
|
||||
@@ -0,0 +0,0 @@ public class GoalSelector {
|
||||
profilerFiller.push("goalCleanup");
|
||||
|
||||
@@ -133,16 +128,15 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||
- for(Goal.Flag flag : wrappedGoal2.getFlags()) {
|
||||
+ // Paper start
|
||||
+ if (!wrappedGoal2.isRunning() && !goalContainsAnyFlags(wrappedGoal2, this.goalTypes) && goalCanBeReplacedForAllFlags(wrappedGoal2, this.lockedFlags) && wrappedGoal2.canUse()) {
|
||||
+ wrappedGoal2.getFlags().forEach(GOAL_FLAG_VALUES, flag -> {
|
||||
+ long flagIterator = wrappedGoal2.getFlags().getBackingSet();
|
||||
+ int wrappedGoalSize = wrappedGoal2.getFlags().size();
|
||||
+ for (int i = 0; i < wrappedGoalSize; ++i) {
|
||||
+ final Goal.Flag flag = GOAL_FLAG_VALUES[Long.numberOfTrailingZeros(flagIterator)];
|
||||
+ flagIterator ^= io.papermc.paper.util.IntegerUtil.getTrailingBit(flagIterator);
|
||||
+ // Paper end
|
||||
WrappedGoal wrappedGoal3 = this.lockedFlags.getOrDefault(flag, NO_GOAL);
|
||||
wrappedGoal3.stop();
|
||||
this.lockedFlags.put(flag, wrappedGoal2);
|
||||
- }
|
||||
+ }); // Paper
|
||||
|
||||
wrappedGoal2.start();
|
||||
}
|
||||
@@ -0,0 +0,0 @@ public class GoalSelector {
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user