propose fix for #3635

This commit is contained in:
Adrian Siekierka 2023-06-28 15:16:02 +02:00
parent 9013fc2028
commit 77649fd246
2 changed files with 8 additions and 8 deletions

View File

@ -59,36 +59,36 @@ class Rack extends traits.PowerAcceptor with traits.Hub with traits.PowerBalance
case _ => None
}
val oldSide = nodeMapping(slot)(connectableIndex)
val oldSide = nodeMapping(slot)(connectableIndex + 1)
if (oldSide == newSide) return
// Cut connection / remove sniffer node.
val mountable = getMountable(slot)
if (mountable != null && oldSide.isDefined) {
if (connectableIndex == 0) {
if (connectableIndex == -1) {
val node = mountable.node
val plug = sidedNode(toGlobal(oldSide.get))
if (node != null && plug != null) {
node.disconnect(plug)
}
}
else {
else if (connectableIndex >= 0) {
snifferNodes(slot)(connectableIndex).remove()
}
}
nodeMapping(slot)(connectableIndex) = newSide
nodeMapping(slot)(connectableIndex + 1) = newSide
// Establish connection / add sniffer node.
if (mountable != null && newSide.isDefined) {
if (connectableIndex == 0) {
if (connectableIndex == -1) {
val node = mountable.node
val plug = sidedNode(toGlobal(newSide.get))
if (node != null && plug != null) {
node.connect(plug)
}
}
else if (connectableIndex < mountable.getConnectableCount) {
else if (connectableIndex >= 0 && connectableIndex < mountable.getConnectableCount) {
val connectable = mountable.getConnectableAt(connectableIndex)
if (connectable != null && connectable.node != null) {
if (connectable.node.network == null) {
@ -114,7 +114,7 @@ class Rack extends traits.PowerAcceptor with traits.Hub with traits.PowerBalance
case _ => // Not connected to this side.
}
for (connectableIndex <- 0 until 3) {
mapping(connectableIndex) match {
mapping(connectableIndex + 1) match {
case Some(side) if toGlobal(side) == plugSide =>
val mountable = getMountable(slot)
if (mountable != null && connectableIndex < mountable.getConnectableCount) {

View File

@ -252,7 +252,7 @@ object PacketHandler extends CommonPacketHandler {
entity match {
case Some(t) => p.player match {
case player: EntityPlayerMP if t.isUseableByPlayer(player) =>
t.connect(mountableIndex, nodeIndex, side)
t.connect(mountableIndex, nodeIndex - 1, side)
case _ =>
}
case _ => // Invalid packet.