diff --git a/game/core/src/main/java/net/minecraft/core/block/entity/TileEntityMesh.java b/game/core/src/main/java/net/minecraft/core/block/entity/TileEntityMesh.java index 68574af82..906ad1fc5 100644 --- a/game/core/src/main/java/net/minecraft/core/block/entity/TileEntityMesh.java +++ b/game/core/src/main/java/net/minecraft/core/block/entity/TileEntityMesh.java @@ -19,8 +19,9 @@ import java.util.stream.Collectors; public class TileEntityMesh extends TileEntity { public final @NotNull List trackedItemsSiphoning = new ArrayList<>(List.of()); - public final int siphonWidth = 5; - public final int siphonHeight = 2; + protected final Map siphonDirValidityCache = new EnumMap<>(Direction.class); + protected final int siphonWidth = 5; + protected final int siphonHeight = 2; public int ticksRan = 0; public TileEntityMesh() { } @@ -32,8 +33,11 @@ public class TileEntityMesh extends TileEntity { return; } - Map validSiphonDirections = Arrays.stream(WireHandler.Directions.ALL).collect(Collectors.toMap(direction -> direction, this::isValidWater)); - handleSiphon(validSiphonDirections); + siphonDirValidityCache.clear(); + for (Direction direction : WireHandler.Directions.ALL) { + siphonDirValidityCache.put(direction, this.isValidWater(direction)); + } + handleSiphon(siphonDirValidityCache); if (ticksRan == 0){ ticksRan = worldObj.rand.nextInt(360); @@ -108,8 +112,15 @@ public class TileEntityMesh extends TileEntity { Direction direction = Direction.NONE; - if(validSiphonDirections.values().stream().noneMatch(val -> val) || - validSiphonDirections.values().stream().filter(val -> val).count() > 1) { + int amountTrue = 0; + for (boolean value : validSiphonDirections.values()) { + if (value) { + amountTrue++; + if (amountTrue > 1) break; + } + } + + if (amountTrue != 1) { return direction; } diff --git a/game/core/src/main/java/net/minecraft/core/block/entity/TileEntityMeshGold.java b/game/core/src/main/java/net/minecraft/core/block/entity/TileEntityMeshGold.java index c3fe1a39a..0ad61f978 100644 --- a/game/core/src/main/java/net/minecraft/core/block/entity/TileEntityMeshGold.java +++ b/game/core/src/main/java/net/minecraft/core/block/entity/TileEntityMeshGold.java @@ -35,8 +35,11 @@ public class TileEntityMeshGold extends TileEntityMesh { } if(filterItem != null){ - Map validSiphonDirections = Arrays.stream(WireHandler.Directions.ALL).collect(Collectors.toMap(direction -> direction, this::isValidWater)); - handleSiphon(validSiphonDirections); + siphonDirValidityCache.clear(); + for (Direction direction : WireHandler.Directions.ALL) { + siphonDirValidityCache.put(direction, this.isValidWater(direction)); + } + handleSiphon(siphonDirValidityCache); } if (ticksRan == 0){