@@ -227,11 +227,7 @@ private void getCableQuads(CableBusRenderState renderState, Consumer<BakedQuad>
227227 // If the connection is straight, no busses are attached, and no covered core
228228 // has been forced (in case of glass
229229 // cables), then render the cable as a simplified straight line.
230- boolean noAttachments = false ; /*
231- * TODO !renderState.getAttachments().values().stream()
232- * .anyMatch(IPartModel::requireCableConnection);
233- */
234- if (noAttachments && isStraightLine (cableType , connectionTypes )) {
230+ if (isStraightLine (cableType , connectionTypes ) && canAllAttachmentsRenderOnStraightCable (renderState )) {
235231 Direction facing = connectionTypes .keySet ().iterator ().next ();
236232
237233 switch (cableType ) {
@@ -320,6 +316,24 @@ private void getCableQuads(CableBusRenderState renderState, Consumer<BakedQuad>
320316 }
321317 }
322318
319+ /**
320+ * {@return true if there aren't any attachments or all of them can render on a straight cable without requiring a
321+ * cable connecting core}.
322+ */
323+ private boolean canAllAttachmentsRenderOnStraightCable (CableBusRenderState renderState ) {
324+ for (var partRenderState : renderState .getAttachments ().values ()) {
325+ var modelsOnSide = partModels .get (partRenderState .partItem ());
326+ if (modelsOnSide != null ) {
327+ for (var modelOnSide : modelsOnSide ) {
328+ if (!modelOnSide .canAttachToStraightCable ()) {
329+ return false ;
330+ }
331+ }
332+ }
333+ }
334+ return true ;
335+ }
336+
323337 @ Nullable
324338 private Material .Baked getCableParticleTexture (CableBusRenderState renderState ) {
325339 CableCoreType coreType = CableCoreType .fromCableType (renderState .getCableType ());
0 commit comments