From c067f5905d908d7fc39483f4be00733879062a2d Mon Sep 17 00:00:00 2001 From: Sebastian Hartte Date: Sun, 23 Jun 2019 14:16:46 +0800 Subject: [PATCH] Fixes #24: IndexOutOfBoundsException with FMP parts. (cherry picked from commit e67969f52f7edd3dfdbda04dc8b3f1bcca4867b1) --- .../appeng/parts/networking/PartCable.java | 37 ++++++++++--------- 1 file changed, 19 insertions(+), 18 deletions(-) diff --git a/src/main/java/appeng/parts/networking/PartCable.java b/src/main/java/appeng/parts/networking/PartCable.java index 335b8c93..2607ca9b 100644 --- a/src/main/java/appeng/parts/networking/PartCable.java +++ b/src/main/java/appeng/parts/networking/PartCable.java @@ -471,27 +471,28 @@ public class PartCable extends AEBasePart implements IPartCable boolean[] writeSide = new boolean[ForgeDirection.VALID_DIRECTIONS.length]; int[] channelsPerSide = new int[ForgeDirection.VALID_DIRECTIONS.length]; + for( final ForgeDirection thisSide : ForgeDirection.VALID_DIRECTIONS ) + { + final IPart part = this.getHost().getPart( thisSide ); + if( part != null ) + { + writeSide[thisSide.ordinal()] = true; + int channels = 0; + if( part.getGridNode() != null ) + { + final IReadOnlyCollection set = part.getGridNode().getConnections(); + for( final IGridConnection gc : set ) + { + channels = Math.max( channels, gc.getUsedChannels() ); + } + } + channelsPerSide[thisSide.ordinal()] = channels; + } + } + IGridNode n = this.getGridNode(); if( n != null ) { - for( final ForgeDirection thisSide : ForgeDirection.VALID_DIRECTIONS ) - { - final IPart part = this.getHost().getPart( thisSide ); - if( part != null ) - { - if( part.getGridNode() != null ) - { - writeSide[thisSide.ordinal()] = true; - - final IReadOnlyCollection set = part.getGridNode().getConnections(); - for( final IGridConnection gc : set ) - { - channelsPerSide[thisSide.ordinal()] = gc.getUsedChannels(); - } - } - } - } - for( final IGridConnection gc : n.getConnections() ) { final ForgeDirection side = gc.getDirection( n );