From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: HaHaWTH <102713261+HaHaWTH@users.noreply.github.com> Date: Sat, 26 Oct 2024 00:06:04 +0800 Subject: [PATCH] Remove stream in Brain diff --git a/src/main/java/net/minecraft/world/entity/ai/Brain.java b/src/main/java/net/minecraft/world/entity/ai/Brain.java index 2ae8c9d56d88987b750e57025d313cfa9300c7e4..88ba505fc5ca084317aaf6be402472ccd42413d8 100644 --- a/src/main/java/net/minecraft/world/entity/ai/Brain.java +++ b/src/main/java/net/minecraft/world/entity/ai/Brain.java @@ -69,13 +69,22 @@ public class Brain { mutableObject.setValue( (new MapCodec>() { public Stream keys(DynamicOps dynamicOps) { - return memoryModules.stream() - .flatMap( - memoryType -> memoryType.getCodec() - .map(codec -> BuiltInRegistries.MEMORY_MODULE_TYPE.getKey((MemoryModuleType)memoryType)) - .stream() - ) - .map(id -> dynamicOps.createString(id.toString())); + // Leaf start - Remove stream in Brain + List results = new java.util.ArrayList<>(); + + for (MemoryModuleType memoryType : memoryModules) { + final Optional codec = memoryType.getCodec(); + + if (codec.isPresent()) { + final net.minecraft.resources.ResourceLocation id = BuiltInRegistries.MEMORY_MODULE_TYPE.getKey(memoryType); + final T ops = dynamicOps.createString(id.toString()); + + results.add(ops); + } + } + + return results.stream(); + // Leaf end - Remove stream in Brain } public DataResult> decode(DynamicOps dynamicOps, MapLike mapLike) { @@ -110,7 +119,8 @@ public class Brain { } public RecordBuilder encode(Brain brain, DynamicOps dynamicOps, RecordBuilder recordBuilder) { - brain.memories().forEach(entry -> entry.serialize(dynamicOps, recordBuilder)); + brain.serializeMemories(dynamicOps, recordBuilder); // Leaf - Remove stream in Brain + return recordBuilder; } }) @@ -152,8 +162,28 @@ public class Brain { } Stream> memories() { - return this.memories.entrySet().stream().map(entry -> Brain.MemoryValue.createUnchecked(entry.getKey(), entry.getValue())); + // Leaf start - Remove stream in Brain + return memoriesList().stream(); + } + + List> memoriesList() { + List> result = new java.util.ArrayList<>(); + + for (Entry, Optional>> entry : this.memories.entrySet()) { + result.add(Brain.MemoryValue.createUnchecked(entry.getKey(), entry.getValue())); + } + + return result; + } + + void serializeMemories(DynamicOps dynamicOps, RecordBuilder recordBuilder) { + for (Entry, Optional>> entry : this.memories.entrySet()) { + final Brain.MemoryValue result = Brain.MemoryValue.createUnchecked(entry.getKey(), entry.getValue()); + + result.serialize(dynamicOps, recordBuilder); + } } + // Leaf end - Remove stream in Brain public boolean hasMemoryValue(MemoryModuleType type) { return this.checkMemory(type, MemoryStatus.VALUE_PRESENT);