package net.shadowfacts.phycon.network.block.terminal import alexiil.mc.lib.attributes.AttributeList import alexiil.mc.lib.attributes.AttributeProvider import net.minecraft.block.BlockState import net.minecraft.block.Material import net.minecraft.entity.player.PlayerEntity import net.minecraft.util.ActionResult import net.minecraft.util.Hand import net.minecraft.util.Identifier import net.minecraft.util.hit.BlockHitResult import net.minecraft.util.math.BlockPos import net.minecraft.util.math.Direction import net.minecraft.world.BlockView import net.minecraft.world.World import net.shadowfacts.phycon.PhysicalConnectivity import net.shadowfacts.phycon.api.NetworkComponent import net.shadowfacts.phycon.block.BlockWithEntity import java.util.* /** * @author shadowfacts */ class TerminalBlock: BlockWithEntity(Settings.of(Material.METAL)), NetworkComponent, AttributeProvider { companion object { val ID = Identifier(PhysicalConnectivity.MODID, "terminal") } override fun getNetworkConnectedSides(state: BlockState, world: World, pos: BlockPos): Collection { return EnumSet.allOf(Direction::class.java) } override fun createBlockEntity(world: BlockView) = TerminalBlockEntity() override fun onUse(state: BlockState, world: World, pos: BlockPos, player: PlayerEntity, hand: Hand, hitResult: BlockHitResult): ActionResult { getBlockEntity(world, pos)!!.onActivate(player) return ActionResult.SUCCESS } override fun addAllAttributes(world: World, pos: BlockPos, state: BlockState, to: AttributeList<*>) { to.offer(getBlockEntity(world, pos)) } }