diff --git a/patches/server/0089-Airplane-Remove-streams-in-PoiCompetitorScan.patch b/patches/server/0089-Airplane-Remove-streams-in-PoiCompetitorScan.patch new file mode 100644 index 000000000..93596d7d3 --- /dev/null +++ b/patches/server/0089-Airplane-Remove-streams-in-PoiCompetitorScan.patch @@ -0,0 +1,71 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Dreeam <61569423+Dreeam-qwq@users.noreply.github.com> +Date: Mon, 22 Jul 2024 10:56:59 +0800 +Subject: [PATCH] Airplane: Remove streams in PoiCompetitorScan + +Original license: GPLv3 +Original project: https://github.com/TECHNOVE/Airplane-Experimental + +This patch is based on the following patch: +"Remove streams" +By: Paul Sauve +As part of: Airplane (https://github.com/TECHNOVE/Airplane-Experimental) +Licensed under: GPL-3.0 (https://www.gnu.org/licenses/gpl-3.0.html) + +Airplane +Copyright (C) 2020 Technove LLC + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . + +diff --git a/src/main/java/net/minecraft/world/entity/ai/behavior/PoiCompetitorScan.java b/src/main/java/net/minecraft/world/entity/ai/behavior/PoiCompetitorScan.java +index 7302d397d39d8400527ab2da4adaf8d792256749..faeb1d42d8361c02b63e33059edaeff78e719c71 100644 +--- a/src/main/java/net/minecraft/world/entity/ai/behavior/PoiCompetitorScan.java ++++ b/src/main/java/net/minecraft/world/entity/ai/behavior/PoiCompetitorScan.java +@@ -22,13 +22,7 @@ public class PoiCompetitorScan { + world.getPoiManager() + .getType(globalPos.pos()) + .ifPresent( +- poiType -> context.>get(mobs) +- .stream() +- .filter(mob -> mob instanceof Villager && mob != entity) +- .map(villagerx -> (Villager)villagerx) +- .filter(LivingEntity::isAlive) +- .filter(villagerx -> competesForSameJobsite(globalPos, poiType, villagerx)) +- .reduce(entity, PoiCompetitorScan::selectWinner) ++ poiType -> poiCompete(context.get(mobs), entity, globalPos, poiType) // Leaf - Airplane - Remove streams in PoiCompetitorScan + ); + return true; + } +@@ -36,6 +30,21 @@ public class PoiCompetitorScan { + ); + } + ++ // Leaf start - Airplane - Remove streams in PoiCompetitorScan ++ private static void poiCompete( ++ List mobs, Villager entity, GlobalPos globalPos, ++ Holder poiType ++ ) { ++ for (LivingEntity mob : mobs) { ++ if (mob instanceof Villager villagerx && mob != entity) { ++ if (villagerx.isAlive() && competesForSameJobsite(globalPos, poiType, villagerx)) { ++ entity = selectWinner(entity, villagerx); ++ } ++ } ++ } ++ } ++ // Leaf end - Airplane - Remove streams in PoiCompetitorScan ++ + private static Villager selectWinner(Villager first, Villager second) { + Villager villager; + Villager villager2;