50 lines
1.4 KiB
Kotlin
50 lines
1.4 KiB
Kotlin
package net.shadowfacts.phycon.network.block.test
|
|
|
|
import net.minecraft.util.Tickable
|
|
import net.minecraft.util.math.Direction
|
|
import net.shadowfacts.phycon.api.Interface
|
|
import net.shadowfacts.phycon.api.frame.EthernetFrame
|
|
import net.shadowfacts.phycon.api.packet.Packet
|
|
import net.shadowfacts.phycon.api.util.IPAddress
|
|
import net.shadowfacts.phycon.init.PhyBlockEntities
|
|
import net.shadowfacts.phycon.network.BaseInterface
|
|
import net.shadowfacts.phycon.network.DeviceBlockEntity
|
|
import net.shadowfacts.phycon.network.NetworkUtil
|
|
import net.shadowfacts.phycon.network.frame.BaseFrame
|
|
|
|
/**
|
|
* @author shadowfacts
|
|
*/
|
|
class SourceBlockEntity: DeviceBlockEntity(PhyBlockEntities.SOURCE), Tickable {
|
|
|
|
override val interfaces = listOf(BaseInterface(this))
|
|
|
|
override fun handle(packet: Packet, itf: Interface) {
|
|
TODO("Not yet implemented")
|
|
}
|
|
|
|
override fun handle(frame: EthernetFrame, fromItf: Interface) {
|
|
// println("${fromItf.macAddress} received frame from ${frame.source}")
|
|
super.handle(frame, fromItf)
|
|
}
|
|
|
|
// var counter = 0
|
|
|
|
override fun tick() {
|
|
super.tick()
|
|
if (!world!!.isClient && counter % 40 == 0L) {
|
|
sendPacket(TestPacket(ipAddress, IPAddress(67, 237, 255, 168)))
|
|
}
|
|
}
|
|
|
|
override fun findDestination(fromItf: Interface): Interface? {
|
|
for (dir in Direction.values()) {
|
|
val itf = NetworkUtil.findConnectedInterface(world!!, pos, dir)
|
|
if (itf != null) {
|
|
return itf
|
|
}
|
|
}
|
|
return null
|
|
}
|
|
|
|
} |