mirror of
https://github.com/Winds-Studio/Leaf.git
synced 2025-12-24 01:19:25 +00:00
66 lines
3.1 KiB
Diff
66 lines
3.1 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Taiyou06 <kaandindar21@gmail.com>
|
|
Date: Sat, 8 Feb 2025 22:11:16 +0100
|
|
Subject: [PATCH] Remove stream in villagers
|
|
|
|
TradeWithVillager#figureOutWhatIAmWillingToTrade
|
|
In the test, this can give ~40% improvement (~20ms -> ~12ms),
|
|
under 2048 villagers situation.
|
|
And ~100% improvement (~36ms -> ~0ms), under 512 villagers situation.
|
|
|
|
Villager#countFoodPointsInInventory
|
|
In the test, this can give ~82.14% improvement (~1456ms -> ~260ms),
|
|
under 2048 villagers situation.
|
|
And ~93.92% improvement (~1382ms -> ~84ms), under 512 villagers situation.
|
|
|
|
diff --git a/net/minecraft/world/entity/ai/behavior/TradeWithVillager.java b/net/minecraft/world/entity/ai/behavior/TradeWithVillager.java
|
|
index 72cca4897f9697573fd6987a5f0d2df52761b8c3..04eea77cf84aaeb781608e48f2aa32f344689889 100644
|
|
--- a/net/minecraft/world/entity/ai/behavior/TradeWithVillager.java
|
|
+++ b/net/minecraft/world/entity/ai/behavior/TradeWithVillager.java
|
|
@@ -77,9 +77,19 @@ public class TradeWithVillager extends Behavior<Villager> {
|
|
}
|
|
|
|
private static Set<Item> figureOutWhatIAmWillingToTrade(Villager villager, Villager other) {
|
|
- ImmutableSet<Item> set = other.getVillagerData().profession().value().requestedItems();
|
|
- ImmutableSet<Item> set1 = villager.getVillagerData().profession().value().requestedItems();
|
|
- return set.stream().filter(item -> !set1.contains(item)).collect(Collectors.toSet());
|
|
+ // Leaf start - Remove stream in villagers
|
|
+ ImmutableSet<Item> otherItems = other.getVillagerData().profession().value().requestedItems();
|
|
+ ImmutableSet<Item> villagerItems = villager.getVillagerData().profession().value().requestedItems();
|
|
+ Set<Item> result = new java.util.HashSet<>();
|
|
+
|
|
+ for (Item item : otherItems) {
|
|
+ if (!villagerItems.contains(item)) {
|
|
+ result.add(item);
|
|
+ }
|
|
+ }
|
|
+
|
|
+ return result;
|
|
+ // Leaf end - Remove stream in villagers
|
|
}
|
|
|
|
private static void throwHalfStack(Villager villager, Set<Item> stack, LivingEntity entity) {
|
|
diff --git a/net/minecraft/world/entity/npc/Villager.java b/net/minecraft/world/entity/npc/Villager.java
|
|
index 48384d7a9cb41506e0b5024baf806e56497e9d62..ffc46d3ffe6d3a577fbad381f1f7d82d78e33d2a 100644
|
|
--- a/net/minecraft/world/entity/npc/Villager.java
|
|
+++ b/net/minecraft/world/entity/npc/Villager.java
|
|
@@ -972,7 +972,17 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
|
|
|
|
private int countFoodPointsInInventory() {
|
|
SimpleContainer inventory = this.getInventory();
|
|
- return FOOD_POINTS.entrySet().stream().mapToInt(entry -> inventory.countItem(entry.getKey()) * entry.getValue()).sum();
|
|
+ // Leaf start - Remove stream in villagers
|
|
+ int sum = 0;
|
|
+
|
|
+ for (Map.Entry<Item, Integer> entry : FOOD_POINTS.entrySet()) {
|
|
+ Item item = entry.getKey();
|
|
+ int points = entry.getValue();
|
|
+ sum += inventory.countItem(item) * points;
|
|
+ }
|
|
+
|
|
+ return sum;
|
|
+ // Leaf end - Remove stream in villagers
|
|
}
|
|
|
|
public boolean hasFarmSeeds() {
|