mirror of
https://github.com/Winds-Studio/Leaf.git
synced 2025-12-19 15:09:25 +00:00
1. Wet the drys 2. Dry the wets 3. Wet the drys 4. Dry the wets 5. Wet the drys 6. Now dust the wets
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 4d8523a43d60cd6b4fd5546ffb3a61417b2c475b..8921faa7b893aae9e91a6f8e36dcd751308f9bab 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().getProfession().requestedItems();
|
|
- ImmutableSet<Item> set1 = villager.getVillagerData().getProfession().requestedItems();
|
|
- return set.stream().filter(item -> !set1.contains(item)).collect(Collectors.toSet());
|
|
+ // Leaf start - Remove stream in villagers
|
|
+ ImmutableSet<Item> otherItems = other.getVillagerData().getProfession().requestedItems();
|
|
+ ImmutableSet<Item> villagerItems = villager.getVillagerData().getProfession().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 bee017f2c47a9f0876e2e05ce1c720332fb74566..0b4c4707139c9c72929799818ec1a1b25575d70e 100644
|
|
--- a/net/minecraft/world/entity/npc/Villager.java
|
|
+++ b/net/minecraft/world/entity/npc/Villager.java
|
|
@@ -985,7 +985,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() {
|